阅读文档-http://golang.org/pkg/math/big/
Mod将y!= 0的z设置为模数x%y并返回z 如果y == 0,则会发生除以零的运行时恐慌。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)
}
Run Code Online (Sandbox Code Playgroud)
我很可能出了点问题。哪里错了?
这是因为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)
Run Code Online (Sandbox Code Playgroud)
结果:
12592 52
Run Code Online (Sandbox Code Playgroud)
的确, 12592%52 == 8
如果要使用大于int64允许运算的数字,则还可以使用以下SetString功能:
n := new(big.Int)
n.SetString("456135478645413786350", 10)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4072 次 |
| 最近记录: |