如何在Go中使用大整数?

我需要在Go中对int64的较大值执行运算,例如求幂和除法,但是我遇到了溢出问题。我尝试将它们转换为float64,但随后遇到其他问题。这是我尝试过的。

我有一个整数变量,必须将其转换为float64才能使用方便的数学包(https://golang.org/pkg/math)。

但是,如果整数变量太大,则无法正确转换。我假设这是因为大小大于float64。例如:

fmt.Printf("%f",float64(111111111111111110)) //Outputs 111111111111111104.000000

我正在尝试使用math.Mod,math.Pow10和math.Log10。我如何能够执行以下逻辑,但是上面显示了很多逻辑?

int(math.Mod(float64(123) / math.Pow10(1),10))) // Gets the second digit

回答:

这个问题对我来说不是很清楚,但是我假设您想对大整数执行操作,并且仅尝试使用float64。

在这种情况下,正确的工具是math / big

package。这是如何使用它来提取int64的第n个十进制数字:

// first digit is n=0

func nthDigit(i int64, n int64) int64 {

var quotient big.Int

quotient.Exp(big.NewInt(10), big.NewInt(n), nil)

bigI := big.NewInt(i)

bigI.Div(bigI, &quotient)

var result big.Int

result.Mod(bigI, big.NewInt(10))

return result.Int64()

}

以上是 如何在Go中使用大整数? 的全部内容, 来源链接: utcz.com/qa/429678.html

回到顶部