Message98215
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.) |
|
Date |
User |
Action |
Args |
2010-01-24 11:23:27 | mark.dickinson | set | recipients:
+ mark.dickinson, rhettinger, facundobatista, jdunck, lorg, skrah, adamtj, bertchughes |
2010-01-24 11:23:27 | mark.dickinson | set | messageid: <1264332207.79.0.987371241452.issue2531@psf.upfronthosting.co.za> |
2010-01-24 11:23:26 | mark.dickinson | link | issue2531 messages |
2010-01-24 11:23:24 | mark.dickinson | create | |
|