[Python-Dev] Why is nan != nan?

Greg Ewing greg.ewing at canterbury.ac.nz
Thu Mar 25 23:45:51 CET 2010


Georg Brandl wrote:
> Thinking of each value created by float('nan') as
> a different nan makes sense to my naive mind, and it also explains
> nicely the behavior present right now.

Not entirely:

   x = float('NaN')
   y = x
   if x == y:
     ...

There it's hard to argue that the NaNs being compared
result from different operations.

It does suggest a potential compromise, though: a single
NaN object compares equal to itself, but different NaN
objects are never equal (more or less what dict membership
testing does now, but extended to all == comparisons).

Whether that's a *sane* compromise I'm not sure.

-- 
Greg


More information about the Python-Dev mailing list