This math scares me
Costas Menico
costas at meezon.com
Mon Mar 12 20:43:22 EST 2001
I appreciate the lessons in floating point math. Unfortunately I had
to deal with this stuff coding in assembler.
However I am new to Python and didnt realize that it displays numbers
like this unless you format them yourself. Some other languages I use
just do the rounding for you.
Fortunately I discovered I can use "print 5.01 + 5.54" and it does the
job. It has the extra intelligence built into it to autoformat
Thanks for the input.
Costas
>costas at springmail.com <costas at springmail.com> wrote in comp.lang.python:
>> Ok, I can see maybe division having problems. But why does addition of
>> the two numbers below:
>>
>> 5.01+5.54
>>
>> give me this?
>>
>> 10.550000000000001
>>
>> I hope its some setting that can take care of this. I am using Python
>> under Windows 98.
>
>It's worse than that. Try:
>
>>>> 5.01
>5.0099999999999998
>
>The number is stored in binary. It's not possible to represent everything in
>a finite number of binary digits (just like you can't represent 1/3 in a
>finite number of decimal digits - you don't protest either when you see
>0.3333333333333333, do you? It's just as wrong).
>
>This is not a Python problem, this is due to the way computers store
>floating point numbers.
>
>If you can avoid them, don't use floats. If you're working with money, count
>cents instead (and use longs if you have numbers over a few hundred million
>cents).
>
>--
>Remco Gerlich
More information about the Python-list
mailing list