Why is Lua arithmetic is not equal to itself? [duplicate]

亡梦爱人 提交于 2019-11-27 08:02:23

问题


Possible Duplicate:
What is a simple example of floating point/rounding error?

When I execute the following Lua code:

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 )

I get the following results:

false
true
false
false
true
false

Can someone explain why 14 * 0.4 and 28 * 0.2 are not equal to 5.6?

Thanks


回答1:


You are dealing with the natural imprecision of binary floating point numbers. Your number a might be 5.5999999999999996 and your result b might be 5.6000000000000005, which are not equal.

In fact, here is the same calculation as done by Python:

>>> 5.6
5.5999999999999996
>>> 14 * 0.4
5.6000000000000005

This behaviour is common to all implementations of binary floating point numbers.



来源:https://stackoverflow.com/questions/6366954/why-is-lua-arithmetic-is-not-equal-to-itself

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!