超大整型
1. 超大整型
第一步:创建对象
创建超大整型对象
// 第一步:创建一个超大整型的一个对象
var v1 big.Int
var v2 big.Int
// 第二步:在超大整型对象中写入值
v1.SetInt64(9223372036854775807)
fmt.Println(v1)
v2.SetString("92233720368547758089223372036854775808", 10)
fmt.Println(v2)
// 第一步:创建一个超大整型的一个对象
v3 := new(big.Int)
v4 := new(big.Int)
// 第二步:在超大整型对象中写入值
v3.SetInt64(9223372036854775807)
fmt.Println(v3)
v4.SetString("92233720368547758089223372036854775808", 10)
fmt.Println(v4)
推荐:使用指针的方式,即:使用new来进行创建和初始化。
第二步:加减乘除
超大对象进行加减乘除
n1 := new(big.Int)
n1.SetInt64(89)
n2 := new(big.Int)
n2.SetInt64(99)
result := new(big.Int)
result.Add(n1, n2)
fmt.Println(result)
n1 := big.NewInt(89)
n2 := big.NewInt(99)
result := new(big.Int)
result.Add(n1, n2)
fmt.Println(result)
其他:
v1 := big.NewInt(11)
v2 := big.NewInt(3)
result := new(big.Int)
// 加
result.Add(v1, v2)
fmt.Println(result)
// 减
result.Sub(v1, v2)
fmt.Println(result)
// 乘
result.Mul(v1, v2)
fmt.Println(result)
// 除(地板除,只能得到商)
result.Div(v1, v2)
fmt.Println(result)
// 除,得商和余数
minder := new(big.Int)
result.DivMod(v1, v2, minder)
fmt.Println(result, minder)
第三步:关于结果
n1 := new(big.Int)
n1.SetString("92233720368547758089223372036854775808", 10)
n2 := new(big.Int)
n2.SetString("11111192233720368547758089223372036854775808", 10)
result := new(big.Int)
result.Add(n1, n2)
fmt.Println(result.String())
最后建议
- 尽量new方式去初始化并返回一个指针类型的方式。
易错的点(int类型和*int类型)
var v1 big.Int v1.SetString("92233720368547758089223372036854775808", 10) var v2 big.Int v2.SetString("2", 10) //result := new(big.Int) var result big.Int result.Add(&v1, &v2) fmt.Println(result.String())