最近区块链中的数值超大 会自动转换成字符串看着好别扭,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())