天天看点

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