[toc]
在 Go 中浮点数表示方式和其他语言一样,都是通过科学计数法表示,float 在存储中分为三部分:
符号位(Sign): 0代表正,1代表为负
指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
尾数部分(Mantissa):尾数部分
这种计数法在 Go 里面会有哪些问题。
1 | a := 100000.001 |
输出:
1 | 200030.00200030004 |
如果想要准确计算浮点的话,可以尝试 https://github.com/shopspring/decimal
1 | a := decimal.NewFromFloat(100000.001) |
其他
在 Go 中探索 IEEE-754 标准 - Go语言中文网 - Golang中文社区 (studygolang.com)