Message58628
Sorry: that was nonsense. trunc is fine---it's round, floor and ceil that fail on large arguments with this patch:
>>> import decimal, math
>>> math.floor(decimal.Decimal("1e30"))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/dickinsm/python_source/py3k/Lib/decimal.py", line 1475, in __floor__
return trunc(self.quantize(Decimal(1), rounding=ROUND_FLOOR))
File "/Users/dickinsm/python_source/py3k/Lib/decimal.py", line 2265, in quantize
'quantize result has too many digits for current context')
File "/Users/dickinsm/python_source/py3k/Lib/decimal.py", line 3546, in _raise_error
raise error(explanation)
decimal.InvalidOperation: quantize result has too many digits for current context
>>> round(decimal.Decimal("1e30"))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/dickinsm/python_source/py3k/Lib/decimal.py", line 1487, in __round__
return trunc(self.quantize(Decimal(1), rounding=ROUND_HALF_EVEN))
File "/Users/dickinsm/python_source/py3k/Lib/decimal.py", line 2265, in quantize
'quantize result has too many digits for current context')
File "/Users/dickinsm/python_source/py3k/Lib/decimal.py", line 3546, in _raise_error
raise error(explanation)
decimal.InvalidOperation: quantize result has too many digits for current context
>>>
Can I suggest using _rescale instead of quantize? For example,
def __round__(self, ndigits:_numbers.Integral=None):
"""Rounds self to ndigits decimal places, defaulting to 0.
If ndigits is omitted or None, returns an int, otherwise a
Decimal. Rounds half toward even."""
if ndigits is None:
return trunc(self._rescale(0, rounding=ROUND_HALF_EVEN))
return self._rescale(-ndigits, rounding=ROUND_HALF_EVEN) |
|
Date |
User |
Action |
Args |
2007-12-14 15:17:47 | mark.dickinson | set | spambayes_score: 0.0174212 -> 0.017421233 recipients:
+ mark.dickinson, facundobatista, jyasskin |
2007-12-14 15:17:46 | mark.dickinson | set | spambayes_score: 0.0174212 -> 0.0174212 messageid: <1197645466.85.0.699069525464.issue1623@psf.upfronthosting.co.za> |
2007-12-14 15:17:46 | mark.dickinson | link | issue1623 messages |
2007-12-14 15:17:46 | mark.dickinson | create | |
|