数字是科学计算的形式:8.0497183772403904E+17
先转换为string数字类型再进行其他数字类型转换如(int ,int64,float64)
解决方法:
第一种:
oldNum := float64(8.0497183772403904E+17)newNum := big.NewRat(1, 1)newNum.SetFloat64(oldNum)fmt.Println(newNum.FloatString(0))
结果:804758523075821952
第二种:
var newNum float64numStr := \"8.04758523075822e+17\"_, err := fmt.Sscanf(numStr, \"%e\", &newNum)if err != nil {log.Errorf(\"fmt.Sscanf error, numStr:%s, err:%v\", numStr, err)return}num := fmt.Sprintf(\"%.f\", newNum)fmt.Println(num)
结果:804758523075821952
第三种:
//先安装包 go get github.com/shopspring/decimal//包中有其他函数进行类型的转换可以适当研究!numStr := \"8.04758523075822e+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())
结果:804758523075822000