mirror of https://github.com/python/cpython.git
Merged revisions 74708 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r74708 | mark.dickinson | 2009-09-07 19:04:58 +0100 (Mon, 07 Sep 2009) | 2 lines #Issue 6795: Fix infinite recursion in long(Decimal('nan')); change int(Decimal('nan')) to raise ValueError instead of either returning NaN or raising InvalidContext. ........
This commit is contained in:
parent
a081c676ad
commit
c05b7890bc
|
@ -1512,10 +1512,9 @@ def __int__(self):
|
|||
"""Converts self to an int, truncating if necessary."""
|
||||
if self._is_special:
|
||||
if self._isnan():
|
||||
context = getcontext()
|
||||
return context._raise_error(InvalidContext)
|
||||
raise ValueError("Cannot convert NaN to integer")
|
||||
elif self._isinfinity():
|
||||
raise OverflowError("Cannot convert infinity to int")
|
||||
raise OverflowError("Cannot convert infinity to integer")
|
||||
s = (-1)**self._sign
|
||||
if self._exp >= 0:
|
||||
return s*int(self._int)*10**self._exp
|
||||
|
|
|
@ -1372,6 +1372,16 @@ def test_int(self):
|
|||
r = d.to_integral(ROUND_DOWN)
|
||||
self.assertEqual(Decimal(int(d)), r)
|
||||
|
||||
self.assertRaises(ValueError, int, Decimal('-nan'))
|
||||
self.assertRaises(ValueError, int, Decimal('snan'))
|
||||
self.assertRaises(OverflowError, int, Decimal('inf'))
|
||||
self.assertRaises(OverflowError, int, Decimal('-inf'))
|
||||
|
||||
self.assertRaises(ValueError, long, Decimal('-nan'))
|
||||
self.assertRaises(ValueError, long, Decimal('snan'))
|
||||
self.assertRaises(OverflowError, long, Decimal('inf'))
|
||||
self.assertRaises(OverflowError, long, Decimal('-inf'))
|
||||
|
||||
def test_trunc(self):
|
||||
for x in range(-250, 250):
|
||||
s = '%0.2f' % (x / 100.0)
|
||||
|
|
|
@ -74,6 +74,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #6795: int(Decimal('nan')) now raises ValueError instead of
|
||||
returning NaN or raising InvalidContext. Also, fix infinite recursion
|
||||
in long(Decimal('nan')).
|
||||
|
||||
- Issue #6850: Fix bug in Decimal._parse_format_specifier for formats
|
||||
with no type specifier.
|
||||
|
||||
|
|
Loading…
Reference in New Issue