Floating Point Limitations

Question

Why are some floating point values not represented exactly in Python?

Answer

The short answer: Because computers operate in base 2 (binary) while natural floating point numbers are in base 10 (decimal), most floating point numbers cannot be represented exactly in the computer. This is not a problem with Python but with all binary computers.

The section "Floating Point Arithmetic: Issues and Limitations" in the Python Tutorial provides a really clear description of why this is the case. In The Perils of Floating Point Bruce Bush provides ways on working around this inherent limitation.

There are packages in Python that provide ready-made ways of getting around this problem. For example, the Numeric.allclose method performs a safe-comparison between two Numeric arrays. If you want to write your own safe-comparisons, however, there isn't a ready-made way of finding out floating-point precision in Python (Martelli 2003, p. 34).

Return to the Tips and Examples index page.

Updated: November 15, 2003 by Johnny Lin <email address>. License.