Bug #1163325: "special" decimals aren't hashable

This commit is contained in:
Raymond Hettinger 2005-03-15 04:59:17 +00:00
parent 141f41ae1a
commit bea3f6f5c7
3 changed files with 10 additions and 0 deletions

View file

@ -728,6 +728,10 @@ class Decimal(object):
# Decimal integers must hash the same as the ints
# Non-integer decimals are normalized and hashed as strings
# Normalization assures that hast(100E-1) == hash(10)
if self._is_special:
if self._isnan():
raise TypeError('Cannot hash a NaN value.')
return hash(str(self))
i = int(self)
if self == Decimal(i):
return hash(i)