我可以在go中使用什么数字类型来获得最大的数字?

时间:2019-07-09 05:35:27

标签: go

假设以下内容:

package main

import (
    "fmt"
)

func main() {
    var MaxInt uint64
    MaxInt = 1<<64 - 1
    fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt)
}

我得到以下结果:

Type: uint64 Value: 18446744073709551615

正如预期的那样。

但是,说我想在使用时变大,说1<<256 - 1

func main() {
    x:= 1<<256-1
    fmt.Printf("Type: %T Value: %v\n", x, x)
}

我得到:

./prog.go:10:10: constant 115792089237316195423570985008687907853269984665640564039457584007913129639936 overflows int

对于x:=1<<512-1,我得到:

./prog.go:10:10: shift count too large: 512

我的问题是:在这种规模下,我可以使用哪些类型来玩大量数字?

1 个答案:

答案 0 :(得分:2)

您可以使用math/big软件包。它包含Int,Float,Rat(理性)类型。