[Python-Dev] Expert floats
Shane Hathaway
shane at zope.com
Tue Mar 30 17:05:30 EST 2004
Tim Peters wrote:
> Suppose you had a binary float format with 3 bits of precision, and the
> result of a computation on that box is .001 binary = 1/8 = 0.125 decimal.
> The "shortest-possible reproducing decimal representation" on that box is
> 0.1. Is it more accurate to move that result to a wider machine via the
> string "0.1" or via the string "0.125"? The former is off by 25%, but the
> latter is exactly right. repr() on the former machine has no way to guess
> whether the 1/8 it's fed is the result of the user typing in "0.1" or the
> result of dividing 1.0 by 8.0. By taking the bits at face value, and
> striving to communicate that as faithfully as possible, it's explainable,
> predictable, and indeed as faithful as possible. "Looks pretty too" isn't a
> requirement for serious floating-point work.
It seems like most people who write '1.1' don't really want to dive into
serious floating-point work. I wonder if literals like 1.1 should
generate decimal objects as described by PEP 327, rather than floats.
Operations on decimals that have no finite decimal representation (like
1.1 / 3) should use floating-point arithmetic internally, but they
should store in decimal rather than floating-point format.
Shane
More information about the Python-Dev
mailing list