HELP: restore my faith in Python

John W. Baxter jwbnews at scandaroon.com
Fri Mar 3 20:24:45 EST 2000


In article <mtsny7ua0n.fsf at astron.berkeley.edu>, 
johann at physics.berkeley.edu wrote:

> In short, you can't trust floats to give precise answers, if the last
> few decimal places matter.  If you're truncating to int, rather than
> rounding, then those last few places do matter.  This is true in any
> language.  Just don't do it.  ;-)

Although this particular example would appear to work correctly in a 
language which implements decimal (BCD or otherwise) floating point.

There are lots of surprises:  0.1 isn't precise in binary floating 
point, either (.0 and .5 are).  And in .00 .. .99, only .25, .5, .75 and 
.00 are precise.

This is why, without LOTS of care, binary floating point is unsuitable 
for accounting for decimal currencies...of which there are some in the 
world.  In US $ for example, an available alternative is to use 
long-enough integers (for the problem at hand) to account for cents or 
mils rather than dollars, and deal with the dollars in input and output 
routines.

  --John (pointing out that we would be better off here if our Noble 
Ancesters had realized that their Thumbs were Sacred, and not to be used 
for mundane things like counting)

-- 
John W. Baxter   Port Ludlow, WA USA  jwbnews at scandaroon.com



More information about the Python-list mailing list