Used Decimal.scaleb() in backends.utils.format_number() and DecimalField.widget_attrs() to improve performance.
This commit is contained in:
parent
9bc4d90d1a
commit
51a00749e9
|
@ -236,7 +236,7 @@ def format_number(value, max_digits, decimal_places):
|
||||||
if max_digits is not None:
|
if max_digits is not None:
|
||||||
context.prec = max_digits
|
context.prec = max_digits
|
||||||
if decimal_places is not None:
|
if decimal_places is not None:
|
||||||
value = value.quantize(decimal.Decimal(".1") ** decimal_places, context=context)
|
value = value.quantize(decimal.Decimal(1).scaleb(-decimal_places), context=context)
|
||||||
else:
|
else:
|
||||||
context.traps[decimal.Rounded] = 1
|
context.traps[decimal.Rounded] = 1
|
||||||
value = context.create_decimal(value)
|
value = context.create_decimal(value)
|
||||||
|
|
|
@ -360,7 +360,7 @@ class DecimalField(IntegerField):
|
||||||
if self.decimal_places is not None:
|
if self.decimal_places is not None:
|
||||||
# Use exponential notation for small values since they might
|
# Use exponential notation for small values since they might
|
||||||
# be parsed as 0 otherwise. ref #20765
|
# be parsed as 0 otherwise. ref #20765
|
||||||
step = str(Decimal('1') / 10 ** self.decimal_places).lower()
|
step = str(Decimal(1).scaleb(-self.decimal_places)).lower()
|
||||||
else:
|
else:
|
||||||
step = 'any'
|
step = 'any'
|
||||||
attrs.setdefault('step', step)
|
attrs.setdefault('step', step)
|
||||||
|
|
Loading…
Reference in New Issue