float64(0) 和 0.0 参与计算结果有时不同

xuchunyang · · 2468 次点击
jan-bar
想要拥有,必定付出。
两个数相减,在一定精度以内就认为相等。或者转成字符串比较。。 因为浮点数存在精度问题。
#4
更多评论
这个比较神奇, 不过浮点数本来也不能用==进行比较. 我纳闷的是为啥第一个能相等...
#1
拿代码测试了一下, 其实刚才隐约感觉这个和存储的字节数有关系. ```go a := (float64(0) +1.1) * 5 / 9 + 200.14 b := (0.0 +1.1) * 5 / 9 + 200.14 fmt.Println(a == b, a, b) ``` 不超过255, 就会相等,不知道深层次的原理是什么也许需要调汇编看一下才明白. 不研究了,知道坑避开就行, 浮点数不可以用==进行相等判断是一个rule
#2