Duplicates:
How is floating point stored? When does it matter?
Why does the following occur in the Python Interpreter?
>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17
>>> 0.1+0.1
0.2
>>> 0.2+0.1
0.30000000000000004
>>> 0.3-0.3
0.0
>>> 0.2+0.1
0.30000000000000004
>>>
Why doesn’t 0.2 + 0.1 = 0.3?
That’s because
.1cannot be represented exactly in a binary floating point representation. If you tryPython will respond with
.1because it only prints up to a certain precision, but there’s already a small round-off error. The same happens with.3, but when you issuethen the round-off errors in
.2and.1accumulate. Also note: