超大整型

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())
    

results matching ""

    No results matching ""