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

xuchunyang · · 2417 次点击
拿代码测试了一下, 其实刚才隐约感觉这个和存储的字节数有关系. ```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
更多评论
这个比较神奇, 不过浮点数本来也不能用==进行比较. 我纳闷的是为啥第一个能相等...
#1
测试的时候遇到的,函数的返回值为浮点数,不用 == 不知道怎么测试
#3