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
You are dealing with the natural imprecision of binary floating point numbers. Your number
amight be 5.5999999999999996 and your resultbmight be 5.6000000000000005, which are not equal.In fact, here is the same calculation as done by Python:
This behaviour is common to all implementations of binary floating point numbers.