gpt4 book ai didi

go - 添加/减去两个数字字符串

转载 作者:IT王子 更新时间:2023-10-29 01:19:17 27 4
gpt4 key购买 nike

我有两个大数字设置为字符串的变量:

var numA = "340282366920938463463374607431768211456"
var numB = "17014118346046923173168730371588410572"

我希望能够在 Go 中对这些大字符串数字进行加减。

我知道我需要使用 math/big 但我仍然无法弄清楚如何使用,因此非常感谢任何示例帮助!

最佳答案

您可以使用 big.NewInt() 创建一个新的 big.Int 值,并使用 int64 值进行初始化。它返回一个指针 (*big.Int)。或者,您可以简单地使用内置的 new() 函数分配一个 big.Int 值,它将是 0,如下所示:new(big.Int) ,或者因为 big.Int 是一个结构类型,一个简单的 composite literal 也可以:&big.Int{}

一旦你有了一个值,你就可以使用 Int.SetString() 来解析和设置一个以 string 形式给出的数字。您可以传递字符串数字的基数,它还会返回一个 bool 值,指示解析是否成功。

然后你可以使用 Int.Add()Int.Sub() 来计算 2 个 big.Int 数的和与差。请注意 Add()Sub() 将结果写入您调用其方法的接收器,因此如果您需要数字(操作数)不变,请使用另一个 big.Int 值来计算和存储结果。

看这个例子:

numA := "340282366920938463463374607431768211456"
numB := "17014118346046923173168730371588410572"

ba, bb := big.NewInt(0), big.NewInt(0)
if _, ok := ba.SetString(numA, 10); !ok {
panic("invalid numA")
}
if _, ok := bb.SetString(numB, 10); !ok {
panic("invalid numB")
}

sum := big.NewInt(0).Add(ba, bb)
fmt.Println("a + b =", sum)

diff := big.NewInt(0).Sub(ba, bb)
fmt.Println("a - b =", diff)

输出(在 Go Playground 上尝试):

a + b = 357296485266985386636543337803356622028
a - b = 323268248574891540290205877060179800884

关于go - 添加/减去两个数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184852/

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