diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index 4530adf7c5..9eabb6dd60 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -169,7 +169,7 @@ def floatformat(text, arg=-1): # Set the precision high enough to avoid an exception, see #15789. tupl = d.as_tuple() units = len(tupl[1]) - tupl[2] - prec = abs(arg) + units + 1 + prec = abs(p) + units + 1 # Avoid conversion to scientific notation by accessing `sign`, `digits` # and `exponent` from `Decimal.as_tuple()` directly. diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py index 5288e50177..5e8c8f1538 100644 --- a/tests/regressiontests/defaultfilters/tests.py +++ b/tests/regressiontests/defaultfilters/tests.py @@ -69,6 +69,8 @@ class DefaultFiltersTests(TestCase): try: self.assertEqual(floatformat(1.2345, 2), u'1.23') self.assertEqual(floatformat(15.2042, -3), u'15.204') + self.assertEqual(floatformat(1.2345, '2'), u'1.23') + self.assertEqual(floatformat(15.2042, '-3'), u'15.204') self.assertEqual(floatformat(decimal.Decimal('1.2345'), 2), u'1.23') self.assertEqual(floatformat(decimal.Decimal('15.2042'), -3), u'15.204') finally: