[Python-Dev] Mixing float and Decimal -- thread reboot

Nick Coghlan ncoghlan at gmail.com
Wed Mar 24 12:47:26 CET 2010


Steven D'Aprano wrote:
> On Wed, 24 Mar 2010 08:51:36 pm Mark Dickinson wrote:
>>> I don't see how it can be so.  Aren't all of those entries garbage?
>>> To compute a histogram of results for computations on a series of
>>> cases would you not have to test each result for NaN-hood, then
>>> hash on a proxy such as the string "Nan"?
> 
> Not necessarily -- you could merely ignore any key which is a NaN, or 
> you could pass each key through this first:
> 
> def intern_nan(x, nan=float('nan')):
>     if math.isnan(x):  return nan
>     return x
> 
> thus ensuring that all NaN keys were the same NaN.

Interning NaN certainly seems like it should be sufficient to eliminate
the set/dict membership weirdness.

That is, make it so that the first two lines of the following return
True, while the latter two lines continue to return False:

>>> float("nan") is float("nan")
False
>>> dec("nan") is dec("nan")
False
>>> float("nan") == float("nan")
False
>>> dec("nan") == dec("nan")
False

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------


More information about the Python-Dev mailing list