Short-circuit Logic
Dave Angel
davea at davea.name
Wed May 29 20:23:00 EDT 2013
On 05/29/2013 12:50 PM, Ian Kelly wrote:
> On Wed, May 29, 2013 at 8:33 AM, rusi <rustompmody at gmail.com> wrote:
>> 0.0 == 0.0 implies 5.4 == 5.4
>> is not a true statement is what (I think) Steven is saying.
>> 0 (or if you prefer 0.0) is special and is treated specially.
>
> It has nothing to do with 0 being special. A floating point number
> will always equal itself (except for nan, which is even more special),
> and in particular 5.4 == 5.4. But if you have two different
> calculations that produce 0, or two different calculations that
> produce 5.4, you might actually get two different numbers that
> approximate 0 or 5.4 thanks to rounding error. If you then compare
> those two ever-so-slightly different numbers, you will find them
> unequal.
>
Rounding error is just one of the problems. Usually less obvious is
quantization error. If you represent a floating number in decimal, but
you're using a binary floating point representation, it just might change.
Another error is roundoff error. Even in a pure decimal system of (say)
40 digits, I could type in a 42 digit number and it would get quantized.
So just because two 42 digit numbers are different doesn't imply that
the 40 digit internal format would be.
--
DaveA
More information about the Python-list
mailing list