gpt4 book ai didi

golang - 使用数学大包的模数

转载 作者:IT王子 更新时间:2023-10-29 00:39:39 26 4
gpt4 key购买 nike

阅读文档 - http://golang.org/pkg/math/big/

Mod 将 z 设置为 y != 0 的模数 x%y 并返回 z。如果 y == 0,则会发生被零除运行时 panic 。 Mod 实现了欧几里得模数(与 Go 不同);有关详细信息,请参阅 DivMod。

10%4 = 2 但我得到 8(使用 math/big 包做同样的事情)- http://play.golang.org/p/_86etDvLYq

package main

import "fmt"
import "math/big"
import "strconv"

func main() {
ten := new(big.Int)
ten.SetBytes([]byte(strconv.Itoa(10)))

four := new(big.Int)
four.SetBytes([]byte(strconv.Itoa(4)))

tenmodfour := new(big.Int)
tenmodfour = tenmodfour.Mod(ten, four)

fmt.Println("mod", tenmodfour)

}

我很可能做错了什么。错在哪里?

最佳答案

这是因为 SetBytes 没有按照您的想法行事!请改用 SetInt64

ten := new(big.Int)
ten.SetBytes([]byte(strconv.Itoa(10)))

four := new(big.Int)
four.SetBytes([]byte(strconv.Itoa(4)))

fmt.Println(ten, four)

结果:

12592 52

事实上,12592%52 == 8

如果你想使用大于 int64 允许你操作的数字,你也可以使用 SetString 函数:

n := new(big.Int)
n.SetString("456135478645413786350", 10)

关于golang - 使用数学大包的模数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24098959/

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