Possible Duplicate:
Python rounding error with float numbers
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "copyright", "credits" or "license()" for more information. >>> 4.2 - 1.8 2.4000000000000004 >>> 1.20 - 1.18 0.020000000000000018 >>> 5.1 - 4 1.0999999999999996 >>> 5 - 4 1 >>> 5.0 - 4.0 1.0
Why is Python getting its maths wrong?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You have reached a new level in computer science, and you are coming of age.
You therefore are now ready for the next step. I have been authorized by the BDFL himself to reveal the following Super Secret document to you. The ancients understood it and deciphered it first, and now, so will you!
The Floating Point Guide
Treat this document with care! Only share this with people you know have reached the same baffling conclusions!
Moderator’s Note
This answer is not representative of the expected quality standards on Stack Overflow. However, it has unexpectedly developed a life of its own and is solely preserved for historical significance now.
Method 2
For a painfully-rigorous guide to how floating-point arithmetic works, complete instructions on how to calculate how large the errors in your answers will be, you need:
What Every Computer Scientist Should Know About Floating-Point Arithmetic
Once you’ve read that, you should go and look for notes on the 8087 specifically, because it implements IEEE 754 poorly and this can cause new exciting problems in your life.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0