Sco*_*ott 4 floating-point lua point
可能重复:
浮点/舍入错误的简单示例是什么?
当我执行以下Lua代码时:
a = 5.6
b = 14 * 0.4
c = 11.2 / 2
d = 28 * 0.2
print( a == b )
print( a == c )
print( a == d )
print( b == c )
print( b == d )
print( c == d )
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
false
true
false
false
true
false
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么14*0.4和28*0.2不等于5.6?
谢谢
Gre*_*ill 12
您正在处理二进制浮点数的自然不精确性.您的号码a
可能是5.5999999999999996,您的结果b
可能是5.6000000000000005,它们不相等.
实际上,这与Python的计算方法相同:
>>> 5.6
5.5999999999999996
>>> 14 * 0.4
5.6000000000000005
Run Code Online (Sandbox Code Playgroud)
这种行为对于二进制浮点数的所有实现都是通用的.