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

This commit is contained in:
Mark Dickinson 2012-08-24 18:53:10 +01:00
parent cb0ec7dc42
commit fc33d4ce0a
4 changed files with 42 additions and 2 deletions

View file

@ -1601,7 +1601,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."""