应用场景

当我们进行浮点数进行(+ - * /)运算时,容易造成精度丢失,于是使用 big 包来处理。

使用步骤如下:

  1. 用 float64 变量构建 Big 对象。

  2. 通过调用 big 包的加,减,乘,除等相应的方法进行算术运算。

  3. 把BigDecimal对象转换成float,double,int等类型。

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import (
"fmt"
"math/big"
)

func main() {
//设置一个大于int64的数
a := new(big.Int)
a, ok := a.SetString("9122322238215458478512545454878168716584545412154785452142499999", 10)
if !ok {
panic("error")
}
//String方法可以转换成字符串输出
fmt.Println(a.String())

//大数相加
b := big.NewInt(2)
b = b.Add(a, b) // Mod 取模、Add 加、Sub 减、Mul 乘、Div 除
fmt.Println(b)

var c float64 = 9122322238215458478512545454878168716584545412154785452142499999
fmt.Printf("%v\n", c)
fmt.Println(c + 2)
}
1
2
3
4
9122322238215458478512545454878168716584545412154785452142499999
9122322238215458478512545454878168716584545412154785452142500001
9.122322238215458e+63
9.122322238215458e+63