var two = 0.2
var one = 0.1
var eight = 0.8
var six = 0.6
[two - one == one, eight - six == two]
结果是true, false
为什么two - one == one
是true
?
为什么 0.2-0.1=0.1
没有精度问题?
var two = 0.2
var one = 0.1
var eight = 0.8
var six = 0.6
[two - one == one, eight - six == two]
结果是true, false
为什么two - one == one
是true
?
为什么 0.2-0.1=0.1
没有精度问题?
你可以看下我的这篇文章:
浮点数计算坑人的原理
文章节选的一部分:
大家都知道计算机要用二进制表示,基本的十进制和二进制的换算应该都清楚。例如:
0.5(十进制) = 0.1(二进制),因为2^-1是0.5。
0.25(十进制) = 0.01(二进制),因为2^-2是0.25。
那0.2呢,怎么表示呢,表示不出来啊。那就只能找个最接近的近似值来代表。
所以0.2的二进制小数是0.0011001100110011.......,也就是(2^-3)+(2^-4)+(2^-7)+(2^-8)+.....
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
确实是精度问题, 可以看看这个