golang 浮点数操作

        数据库中金额元存储的数据结构使用的是decimal(15,2),golang中使用float64保存变量内容。通过转换将 float64 -> int64

最简单的方式:int64(float64 * 100),但是由于浮点数在计算机内的表示方式问题导致有一部分数据会出现问题,

例如: 

var v = 67.6  
fmt.Println(int64(v *100)) 输出结果为:6759

 

解决方法:

     使用"github.com/shopspring/decimal"包,将对浮点数进行精确计算,例如:        

f1 := decimal.NewFromFloat(v)
f2 := decimal.NewFromFloat(100)
fmt.Println(f1.Mul(f2).IntPart()) 输出结果为6760

参考:

https://www.yuque.com/docs/share/a433b988-94bc-4f4a-8338-d5d761fac603

你可能感兴趣的:(Go)