gpt4 book ai didi

go - 使用 big.Rat 和 Go 来获取 Abs() 值

转载 作者:行者123 更新时间:2023-12-01 22:39:55 25 4
gpt4 key购买 nike

我是 Go 的初学者和 Java 开发人员。
我目前正在与 big.Rat 合作。

我需要获取 Abs大鼠 为此我必须写一些类似的东西
n.Abs(n)或类似 big.Rat{}.Abs(n)
为什么不去提供类似 n.Abs() 的东西?
还是我哪里出错了?

最佳答案

围棋big当涉及到它的函数签名时,包关心内存分配。 A big.Rat由两个 big.Int 组成s,每个都包含一个数组 uint s。不像 int ( native 32 或 64 位整数),一个 big.Int因此必须根据其值动态分配。对于大值,这意味着数组中有更多元素。

您提议的函数签名 n.Abs()意味着一个与 n 大小相同的新数组必须为此操作分配。现实中我们经常有这样的情况,原来的n不再需要,因此我们可以重用其现有内存。为了允许这一点,Abs函数需要一个指向现有 big.Rat 的指针这可能是 n本身。该实现现在可以重用内存。调用者现在可以完全控制用于这些操作的内存。

这可能不是所有用例的最佳 API,事实上,如果您只想快速计算几个大数,在具有 GB 内存的计算机上,您可能更喜欢 n.Abs()版本,但是如果您使用大量大数字进行数值昂贵的计算,您必须能够控制您的内存。例如,想象一下在 Raspberry 上进行一些图像处理,在那里您受到可用内存的更多限制。在这种情况下,现有的 API 可以让您更高效。

关于go - 使用 big.Rat 和 Go 来获取 Abs() 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58301766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com