Author mark.dickinson
Recipients adamtj, bertchughes, facundobatista, jdunck, lorg, mark.dickinson, rhettinger, skrah
Date 2010-01-24.11:23:24
SpamBayes Score 1.25692e-11
Marked as misclassified No
Message-id <1264332207.79.0.987371241452.issue2531@psf.upfronthosting.co.za>
In-reply-to
Content
So here's the plan for trunk.  The big question is:  what should be done for py3k?

For trunk:

 - all comparisons (==, !=, <=, >=, <, >) between floats and Decimals
   return the correct numerical result, as though the float were
   converted to a Decimal with no loss of precision.  Like-signed float
   and Decimal infinities compare equal.  float and Decimal nans compare
   unequal to everything else, as always.

 - check whether anything special needs to be done to make sure that
   cmp also returns sensible results.

 - fix Decimal.__hash__ so that when x == y for a float x and Decimal
   instance y, hash(x) == hash(y)

 - the hash fix above is going to slow down hash computations, so
   consider caching hash values for Decimal instances (as a _hash
   attribute on the Decimal object itself).  My gut feeling is that
   this probably isn't worth it, given that Decimal objects probably
   don't get hashed very often in normal use, but I'll do some timings
   to find out what the performance impact of the new hash is.

For py3k, the obvious options are:

(A) adopt the above changes, or

(B) keep Decimal and float non-comparable (as currently).  In this case, a Decimal-to-float comparison in trunk should probably raise a DeprecationWarning.  (Note that DeprecationWarnings are now silent by default, so such a warning wouldn't impact end-users much.)
History
Date User Action Args
2010-01-24 11:23:27mark.dickinsonsetrecipients: + mark.dickinson, rhettinger, facundobatista, jdunck, lorg, skrah, adamtj, bertchughes
2010-01-24 11:23:27mark.dickinsonsetmessageid: <1264332207.79.0.987371241452.issue2531@psf.upfronthosting.co.za>
2010-01-24 11:23:26mark.dickinsonlinkissue2531 messages
2010-01-24 11:23:24mark.dickinsoncreate