求助 float64 赋值 999999999994.999756 精度丢失?

zhengsh · · 2274 次点击
浮点数本来就不精确的,例如用浮点数计算 0.1 + 0.2 不等于0.3 。 建议看看浮点数底层存储的原理:https://www.bilibili.com/video/BV1354y1B7o1
#7
更多评论
打印格式的问题,你用 fmt.Printf("%.6f", fff) 打印就能得到正确结果
#1
1楼 <a href="/user/jian1098" title="@jian1098">@jian1098</a> 请问这是为什么呢,是由于 idea 的显示导致的问题, 还是编码的问题 我希望解决的问题是进行一个小数计算 然后最终结果返回 一个float64 的双精度浮点数 流程如下: ```golang var fff float64 = 999999999994.999756 var ggg float64 = 2.00010001 fmt.Printf(&#34;%.6f \n&#34;, fff) a := decimal.NewFromFloat(fff) p := decimal.NewFromFloat(ggg) result, _ := a.Sub(p).Float64() fmt.Printf(&#34;result = %f \n&#34;, result) ``` ![2222.png](https://static.studygolang.com/201022/ffb750edf91cd47826280278f3cdec3d.png)
#2