天天看點

go 科學計數法 大數值轉string 串 求和等等

最近區塊鍊中的數值超大 會自動轉換成字元串看着好别扭,go官方也沒有較好的庫

通過查找在git上找到了庫:

引用導入  go get github.com/shopspring/decimal

代碼:

import (
  "fmt"
  "github.com/labstack/gommon/log"
  "github.com/shopspring/decimal"
  "strconv"
)


func main() {
  numStr := "1e+17"
  decimalNum, err := decimal.NewFromString(numStr)
  if err != nil {
    log.Errorf("decimal.NewFromString error, numStr:%s, err:%v", numStr, err)
    return
  }
  fmt.Println(decimalNum.String())
}
//out  "1000000000000000"      
de1,err:=decimal.NewFromString("1e+8")

  de2,err:=decimal.NewFromString("1e+8")

  if err==nil{
    fmt.Println("和:"+de1.Add(de2).String())
  }
//output :  和:200000000      
elem.Value=1e+20
valueStr:= strconv.FormatFloat(elem.Value, 'E', -1, 64);
de2,err:=decimal.NewFromString(valueStr)
if err!=nil{
  log.Error(err.Error())
  continue
}
fmt.Println(de2.String())