这是在游乐场制作的小型Swift片段:
var s:Double = -1.0
while s <= 1 {
print ("result", s, 20 == s)
s += 0.1
}
但 s 永远不会等于0.这是结果的一部分:
....
result -0.2 false
result -0.1 false
result -1.38777878078145e-16 false
result 0.0999999999999999 false
result 0.2 false
result 0.3 false
result 0.4 false
result 0.5 false
....
如何比较双值?如何确保0.0为零,而不是0.00000000000001?为什么会这样?