Merge
This commit is contained in:
commit
b5eacc2928
|
@ -1650,7 +1650,7 @@ class Decimal(object):
|
||||||
self = _dec_from_triple(self._sign, '1', exp_min-1)
|
self = _dec_from_triple(self._sign, '1', exp_min-1)
|
||||||
digits = 0
|
digits = 0
|
||||||
rounding_method = self._pick_rounding_function[context.rounding]
|
rounding_method = self._pick_rounding_function[context.rounding]
|
||||||
changed = getattr(self, rounding_method)(digits)
|
changed = rounding_method(self, digits)
|
||||||
coeff = self._int[:digits] or '0'
|
coeff = self._int[:digits] or '0'
|
||||||
if changed > 0:
|
if changed > 0:
|
||||||
coeff = str(int(coeff)+1)
|
coeff = str(int(coeff)+1)
|
||||||
|
@ -1690,8 +1690,6 @@ class Decimal(object):
|
||||||
# here self was representable to begin with; return unchanged
|
# here self was representable to begin with; return unchanged
|
||||||
return Decimal(self)
|
return Decimal(self)
|
||||||
|
|
||||||
_pick_rounding_function = {}
|
|
||||||
|
|
||||||
# for each of the rounding functions below:
|
# for each of the rounding functions below:
|
||||||
# self is a finite, nonzero Decimal
|
# self is a finite, nonzero Decimal
|
||||||
# prec is an integer satisfying 0 <= prec < len(self._int)
|
# prec is an integer satisfying 0 <= prec < len(self._int)
|
||||||
|
@ -1758,6 +1756,17 @@ class Decimal(object):
|
||||||
else:
|
else:
|
||||||
return -self._round_down(prec)
|
return -self._round_down(prec)
|
||||||
|
|
||||||
|
_pick_rounding_function = dict(
|
||||||
|
ROUND_DOWN = _round_down,
|
||||||
|
ROUND_UP = _round_up,
|
||||||
|
ROUND_HALF_UP = _round_half_up,
|
||||||
|
ROUND_HALF_DOWN = _round_half_down,
|
||||||
|
ROUND_HALF_EVEN = _round_half_even,
|
||||||
|
ROUND_CEILING = _round_ceiling,
|
||||||
|
ROUND_FLOOR = _round_floor,
|
||||||
|
ROUND_05UP = _round_05up,
|
||||||
|
)
|
||||||
|
|
||||||
def __round__(self, n=None):
|
def __round__(self, n=None):
|
||||||
"""Round self to the nearest integer, or to a given precision.
|
"""Round self to the nearest integer, or to a given precision.
|
||||||
|
|
||||||
|
@ -2554,8 +2563,8 @@ class Decimal(object):
|
||||||
if digits < 0:
|
if digits < 0:
|
||||||
self = _dec_from_triple(self._sign, '1', exp-1)
|
self = _dec_from_triple(self._sign, '1', exp-1)
|
||||||
digits = 0
|
digits = 0
|
||||||
this_function = getattr(self, self._pick_rounding_function[rounding])
|
this_function = self._pick_rounding_function[rounding]
|
||||||
changed = this_function(digits)
|
changed = this_function(self, digits)
|
||||||
coeff = self._int[:digits] or '0'
|
coeff = self._int[:digits] or '0'
|
||||||
if changed == 1:
|
if changed == 1:
|
||||||
coeff = str(int(coeff)+1)
|
coeff = str(int(coeff)+1)
|
||||||
|
@ -3767,18 +3776,6 @@ _numbers.Number.register(Decimal)
|
||||||
|
|
||||||
##### Context class #######################################################
|
##### Context class #######################################################
|
||||||
|
|
||||||
|
|
||||||
# get rounding method function:
|
|
||||||
rounding_functions = [name for name in Decimal.__dict__.keys()
|
|
||||||
if name.startswith('_round_')]
|
|
||||||
for name in rounding_functions:
|
|
||||||
# name is like _round_half_even, goes to the global ROUND_HALF_EVEN value.
|
|
||||||
globalname = name[1:].upper()
|
|
||||||
val = globals()[globalname]
|
|
||||||
Decimal._pick_rounding_function[val] = name
|
|
||||||
|
|
||||||
del name, val, globalname, rounding_functions
|
|
||||||
|
|
||||||
class _ContextManager(object):
|
class _ContextManager(object):
|
||||||
"""Context manager class to support localcontext().
|
"""Context manager class to support localcontext().
|
||||||
|
|
||||||
|
|
|
@ -103,6 +103,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #11830: Remove unnecessary introspection code in the decimal module.
|
||||||
|
|
||||||
- Issue #11703 - urllib2.geturl() does not return correct url when the original
|
- Issue #11703 - urllib2.geturl() does not return correct url when the original
|
||||||
url contains #fragment.
|
url contains #fragment.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue