Issue #15544: Fix Decimal.__float__ to work with payload-carrying NaNs.

This commit is contained in:
Mark Dickinson 2012-08-24 19:32:13 +01:00
parent 15251a99bb
commit e4204bcfb7
3 changed files with 25 additions and 1 deletions

View file

@ -1555,7 +1555,13 @@ class Decimal(object):
def __float__(self):
"""Float representation."""
return float(str(self))
if self._isnan():
if self.is_snan():
raise ValueError("Cannot convert signaling NaN to float")
s = "-nan" if self._sign else "nan"
else:
s = str(self)
return float(s)
def __int__(self):
"""Converts self to an int, truncating if necessary."""