summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2004-10-20 06:58:28 (GMT)
committerRaymond Hettinger <python@rcn.com>2004-10-20 06:58:28 (GMT)
commit76e60d687dde9d987f39e16f8fe7814daf1f1e26 (patch)
tree88b24b29f13683f0d46aaebfed35866c70b913b4 /Lib
parent9414ded8f3e704b78e71f50ea86ce42654f27c6d (diff)
downloadcpython-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.py20
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"""