Fixed #27394 -- Added scientific notation support for big integers in floatformat filter.
This commit is contained in:
parent
9e4fd3301d
commit
12f7928f5a
|
@ -134,7 +134,7 @@ def floatformat(text, arg=-1):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
input_val = force_text(text)
|
input_val = repr(text)
|
||||||
d = Decimal(input_val)
|
d = Decimal(input_val)
|
||||||
except UnicodeEncodeError:
|
except UnicodeEncodeError:
|
||||||
return ''
|
return ''
|
||||||
|
@ -165,7 +165,8 @@ def floatformat(text, arg=-1):
|
||||||
try:
|
try:
|
||||||
# Set the precision high enough to avoid an exception, see #15789.
|
# Set the precision high enough to avoid an exception, see #15789.
|
||||||
tupl = d.as_tuple()
|
tupl = d.as_tuple()
|
||||||
units = len(tupl[1]) - tupl[2]
|
units = len(tupl[1])
|
||||||
|
units += -tupl[2] if m else tupl[2]
|
||||||
prec = abs(p) + units + 1
|
prec = abs(p) + units + 1
|
||||||
|
|
||||||
# Avoid conversion to scientific notation by accessing `sign`, `digits`
|
# Avoid conversion to scientific notation by accessing `sign`, `digits`
|
||||||
|
|
|
@ -54,6 +54,10 @@ class FunctionTests(SimpleTestCase):
|
||||||
self.assertEqual(floatformat('foo', 'bar'), '')
|
self.assertEqual(floatformat('foo', 'bar'), '')
|
||||||
self.assertEqual(floatformat('¿Cómo esta usted?'), '')
|
self.assertEqual(floatformat('¿Cómo esta usted?'), '')
|
||||||
self.assertEqual(floatformat(None), '')
|
self.assertEqual(floatformat(None), '')
|
||||||
|
self.assertEqual(floatformat(-1.323297138040798e+35, 2), '-132329713804079800000000000000000000.00')
|
||||||
|
self.assertEqual(floatformat(-1.323297138040798e+35, -2), '-132329713804079800000000000000000000')
|
||||||
|
self.assertEqual(floatformat(1.5e-15, 20), '0.00000000000000150000')
|
||||||
|
self.assertEqual(floatformat(1.5e-15, -20), '0.00000000000000150000')
|
||||||
|
|
||||||
def test_zero_values(self):
|
def test_zero_values(self):
|
||||||
self.assertEqual(floatformat(0, 6), '0.000000')
|
self.assertEqual(floatformat(0, 6), '0.000000')
|
||||||
|
|
Loading…
Reference in New Issue