diff options
author | Raymond Hettinger <python@rcn.com> | 2004-10-20 06:58:28 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2004-10-20 06:58:28 (GMT) |
commit | 76e60d687dde9d987f39e16f8fe7814daf1f1e26 (patch) | |
tree | 88b24b29f13683f0d46aaebfed35866c70b913b4 /Lib | |
parent | 9414ded8f3e704b78e71f50ea86ce42654f27c6d (diff) | |
download | cpython-76e60d687dde9d987f39e16f8fe7814daf1f1e26.zip cpython-76e60d687dde9d987f39e16f8fe7814daf1f1e26.tar.gz cpython-76e60d687dde9d987f39e16f8fe7814daf1f1e26.tar.bz2 |
SF bug #1048728: Bug fixes and cleanup for decimal.py
(Contributed by Neal Norwitz. Reviewed by Facundo Bastista.)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/decimal.py | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/Lib/decimal.py b/Lib/decimal.py index e4c3344..7ae59d1 100644 --- a/Lib/decimal.py +++ b/Lib/decimal.py @@ -136,7 +136,6 @@ __all__ = [ import threading import copy -import operator #Rounding ROUND_DOWN = 'ROUND_DOWN' @@ -1716,14 +1715,11 @@ class Decimal(object): val = Decimal(1) context = context._shallow_copy() context.prec = firstprec + elength + 1 - rounding = context.rounding if n < 0: #n is a long now, not Decimal instance n = -n mul = Decimal(1).__div__(mul, context=context) - shouldround = context._rounding_decision == ALWAYS_ROUND - spot = 1 while spot <= n: spot <<= 1 @@ -1742,7 +1738,7 @@ class Decimal(object): spot >>= 1 context.prec = firstprec - if shouldround: + if context._rounding_decision == ALWAYS_ROUND: return val._fix(context) return val @@ -1823,8 +1819,6 @@ class Decimal(object): if ans: return ans - out = 0 - if watchexp and (context.Emax < exp or context.Etiny() > exp): return context._raise_error(InvalidOperation, 'rescale(a, INF)') @@ -1844,7 +1838,6 @@ class Decimal(object): tmp._int = (0,) + tmp._int digits += 1 - prevexact = context.flags[Inexact] if digits < 0: tmp._exp = -digits + tmp._exp tmp._int = (0,1) @@ -1940,7 +1933,6 @@ class Decimal(object): half = Decimal('0.5') - count = 1 maxp = firstprec + 2 rounding = context._set_rounding(ROUND_HALF_EVEN) while 1: @@ -2043,8 +2035,9 @@ class Decimal(object): if context is None: context = getcontext() - context._rounding_decision == ALWAYS_ROUND - return ans._fix(context) + if context._rounding_decision == ALWAYS_ROUND: + return ans._fix(context) + return ans def min(self, other, context=None): """Returns the smaller value. @@ -2089,8 +2082,9 @@ class Decimal(object): if context is None: context = getcontext() - context._rounding_decision == ALWAYS_ROUND - return ans._fix(context) + if context._rounding_decision == ALWAYS_ROUND: + return ans._fix(context) + return ans def _isinteger(self): """Returns whether self is an integer""" |