summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2017-12-30 18:05:15 +0100
committerGitHub <noreply@github.com>2017-12-30 18:05:15 +0100
commit51a00749e9d1814acfb6bf8732ecd21f18944083 (patch)
treec03edebd5a5263fc1ff622d6fa526a7918f437c9
parent9bc4d90d1a8c4d1dee54115a0995a7b6fca8635b (diff)
Used Decimal.scaleb() in backends.utils.format_number() and DecimalField.widget_attrs() to improve performance.
-rw-r--r--django/db/backends/utils.py2
-rw-r--r--django/forms/fields.py2
2 files changed, 2 insertions, 2 deletions
diff --git a/django/db/backends/utils.py b/django/db/backends/utils.py
index f4641e3db8..a574d64562 100644
--- a/django/db/backends/utils.py
+++ b/django/db/backends/utils.py
@@ -236,7 +236,7 @@ def format_number(value, max_digits, decimal_places):
if max_digits is not None:
context.prec = max_digits
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:
context.traps[decimal.Rounded] = 1
value = context.create_decimal(value)
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 92a8f768c4..61f5ccfe58 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -360,7 +360,7 @@ class DecimalField(IntegerField):
if self.decimal_places is not None:
# Use exponential notation for small values since they might
# 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:
step = 'any'
attrs.setdefault('step', step)