func main() { a := math.MaxInt64 b := math.MaxInt64 c := a + b fmt.Printf("%d + %d = %d", a, b, c) }上述代码将两个 int64 的最大值相加,运行结果如下:
func NewInt(x int64) *Int big1 := big.NewInt(math.MaxInt64)使用 NewInt 方法返回的是 *Int 类型。
func (z *Int) Add(x, y *Int) *Int计算加法需要使用 Add 方法,该方法返回 x + y 的值,将 z 的值设为 x + y ,并返回 x + y。
func main() { big1 := big.NewInt(math.MaxInt64) big2 := big.NewInt(math.MaxInt64) big3 := big1.Add(big1, big2) fmt.Println(big1) fmt.Println(big3) }运行结果如下:
func (z *Int) Sub(x, y *Int) *Int
计算减法使用 Sub 方法,方法返回值和 Add 方法相同,下面的代码计算了 int64 的最小值减去 int64 的最大值的结果。
func main() { big1 := big.NewInt(math.MinInt64) big2 := big.NewInt(math.MaxInt64) big3 := big1.Sub(big1, big2) fmt.Println(big1) fmt.Println(big3) }运行结果如下:
func (z *Int) Mul(x, y *Int) *Int乘法计算使用 Mul 方法,使用方法同上,下面代码计算了两个 int64 的最大值相乘的结果。
func main() { big1 := big.NewInt(math.MaxInt64) big2 := big.NewInt(math.MaxInt64) big3 := big1.Mul(big1, big2) fmt.Println(big1) fmt.Println(big3) }运行结果如下:
func (z *Int) Div(x, y *Int) *Int除法计算使用 Div 方法,使用方法同上,下面代码计算两个 int64 的最大值的乘积除以 2 的结果。
func main() { big1 := big.NewInt(math.MaxInt64) big2 := big.NewInt(math.MaxInt64) big3 := big1.Mul(big1, big2) big3.Div(big3, big.NewInt(2)) fmt.Println(big3) }运行结果如下:
func (z *Int) SetString(s string, base int) (*Int, bool)该方法将 z 设为 s 代表的值,并且返回 bool 表明是否成功,base 为基数,基数必须为 0 或者 2 到 MaxBase(字符串转换函数接受的最大进制) 之间的整数,如果基数为 0,字符串的前缀决定实际的转换基数:"0x"、"0X"表示十六进制;"0b"、"0B"表示二进制;"0"表示八进制;否则为十进制。
func main() { big1 := big.NewInt(1) big1, ok := big1.SetString("222222222222222222222222222222222222", 10) if !ok { fmt.Println("设置失败") } fmt.Println(big1) big1.Div(big1, big.NewInt(2)) fmt.Println(big1) }上述代码首先 NewInt 了一个值为 1 的 *Int 类型变量 big1,然后通过 SetString 方法将 big1 的值设置为 222222222222222222222222222222222222,然后将 big1 除以 2 得到最后的答案,运行结果如下:
func main() { fmt.Printf("float最大值:%f\n", math.MaxFloat64) big1 := big.NewFloat(math.MaxFloat64) big2 := big.NewFloat(math.MaxFloat64) // 加法 big1.Add(big1, big2) fmt.Printf("加法:%f\n", big1) // 减法 big1.Sub(big1, big2) fmt.Printf("减法:%f\n", big1) // 乘法 big1.Mul(big1, big.NewFloat(2)) fmt.Printf("乘法:%f\n", big1) // 除法 big1.Quo(big1, big.NewFloat(2)) fmt.Printf("除法:%f\n", big1) }
运行结果如下: