代码如下
var fff float64 fff = 999999999994.999756
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
打印格式的问题,你用 fmt.Printf("%.6f", fff) 打印就能得到正确结果
1楼 @jian1098 请问这是为什么呢,是由于 idea 的显示导致的问题, 还是编码的问题
我希望解决的问题是进行一个小数计算
然后最终结果返回 一个float64 的双精度浮点数
流程如下:
var fff float64 = 999999999994.999756 var ggg float64 = 2.00010001 fmt.Printf("%.6f \n", fff) a := decimal.NewFromFloat(fff) p := decimal.NewFromFloat(ggg) result, _ := a.Sub(p).Float64() fmt.Printf("result = %f \n", result)
1楼 @jian1098 请问这是为什么呢,是由于 idea 的显示导致的问题, 还是编码的问题 我希望解决的问题是进行一个小数计算 然后最终结果返回 一个float64 的双精度浮点数 流程如下: ```golang var fff float64 = 999999999994.999756 var ggg float64 = 2.00010001 fmt.Printf("%.6f \n", fff) a := decimal.NewFromFloat(fff) p := decimal.NewFromFloat(ggg) result, _ := a.Sub(p).Float64() fmt.Printf("result = %f \n", result) ``` 
fmt.Printf输出格式问题呀,%v默认精度4,%f默认精度6,自定义精度就是%.精度f
注意精度问题,我写过一篇文章,详解浮点数。https://mp.weixin.qq.com/s/BmXbChq3RVRmdGNgfxLyvw
#2楼 @zhengsh fmt.Printf输出格式问题呀,%v默认精度4,%f默认精度6,自定义精度就是%.精度f
好的,我看了 polaris 的文章后我大概明白了为什么
谢谢大佬的分享
浮点数本来就不精确的,例如用浮点数计算 0.1 + 0.2 不等于0.3 。
建议看看浮点数底层存储的原理:https://www.bilibili.com/video/BV1354y1B7o1
`单行代码`
打印格式的问题,你用 fmt.Printf("%.6f", fff) 打印就能得到正确结果
1楼 @jian1098 请问这是为什么呢,是由于 idea 的显示导致的问题, 还是编码的问题
我希望解决的问题是进行一个小数计算
然后最终结果返回 一个float64 的双精度浮点数
流程如下:
fmt.Printf输出格式问题呀,%v默认精度4,%f默认精度6,自定义精度就是%.精度f
注意精度问题,我写过一篇文章,详解浮点数。https://mp.weixin.qq.com/s/BmXbChq3RVRmdGNgfxLyvw
好的,我看了 polaris 的文章后我大概明白了为什么
谢谢大佬的分享
浮点数本来就不精确的,例如用浮点数计算 0.1 + 0.2 不等于0.3 。
建议看看浮点数底层存储的原理:https://www.bilibili.com/video/BV1354y1B7o1