cf2000 发表于 2018-9-21 06:40:56

golang 的 math/big 进行

  进行高进度运算的时候unint64已经无法满足需求,这个时候大家可以采用math.big库来进行高进度计算,下面以计算第10000位的菲波纳切数来展示big的用法,代码如下:
  

package main  

  
import (
"fmt"  "math/big"
  "time"
  
)
  

  
const LIM = 10000 //求第10000位的费布拉切数
  

  
var fibs *big.Int //使用数组保存计算出来的费布拉切数的指针
  

  
func main() {
  result := big.NewInt(0)
  start := time.Now()
  for i := 0; i < LIM; i++ {
  result = fibonacci(i)
  if i == LIM-1 {
  fmt.Printf("fibonacci(%d) is: %d\n", i, result)
  }
  }
  

  fmt.Println(result)
  fmt.Printf("%T\n", result)
  end := time.Now()
  delta := end.Sub(start)
  fmt.Printf("longCalculation took this amount of time: %s\n", delta)
  
}
  

  
func fibonacci(n int) (res *big.Int) {
  if n
页: [1]
查看完整版本: golang 的 math/big 进行