[Tutor] the binary math "wall"

spir ☣ denis.spir at gmail.com
Tue Apr 20 19:41:35 CEST 2010


On Tue, 20 Apr 2010 09:58:06 -0700 (PDT)
Lowell Tackett <lowelltackett at yahoo.com> wrote:

> I'm running headlong into the dilemma of binary math representation, with game-ending consequences, e.g.:
> 
> >>> 0.15
> 0.14999999999999999
> [...]
> The last line should be zero, and needs to be for me to continue this algorithm.
> 
> Any of Python's help-aids that I apply to sort things out, such as formatting (%), or modules like "decimal" do nothing more than "powder up" the display for visual consumption (turning it into a string).  The underlying float value remains "corrupted",

You are wrong:

>>> from decimal import Decimal
>>> s  = "0.15"
>>> Decimal(s) == float(s)

This shows, maybe weirdly, that the decimal version != 0.14999999999999999 --since it is actually equal to 0.15. Decimals are *not* internally represented as binary values, but instead with groups of bits each coding a *decimal* digit; this is precisely the point. Else why do you think developpers would cope with such a problem?


Denis
________________________________

vit esse estrany ☣

spir.wikidot.com


More information about the Tutor mailing list