numberformat.format() incorrectly formats large/tiny floats in scientific notation
For floats with values larger than 1e16 or smaller than 1e-5, their string representation uses scientific notation in Python, which causes numberformat.format
to return an erroneous output.
>>> from django.utils.numberformat import format
>>> format(0.0000000000000000009, '.', 2)
'9e-19.00'
>>> format(1e16, '.', 2, thousand_sep=',', grouping=3, force_grouping=True)
'1e,+16.00'
This is similar to #23935 but that was only fixed for Decimal types.
Change History
(8)
Component: |
Uncategorized → Utilities
|
Description: |
modified (diff)
|
Triage Stage: |
Unreviewed → Accepted
|
Type: |
Uncategorized → Bug
|
Has patch: |
set
|
Patch needs improvement: |
set
|
Summary: |
numberformat.format does not handle scientific notation correctly → numberformat.format() incorrectly formats large/tiny floats in scientific notation
|
Owner: |
changed from nobody to Hasan Ramezani
|
Patch needs improvement: |
unset
|
Status: |
new → assigned
|
Patch needs improvement: |
set
|
Version: |
1.11 → master
|
Patch needs improvement: |
unset
|
Triage Stage: |
Accepted → Ready for checkin
|
Resolution: |
→ fixed
|
Status: |
assigned → closed
|
PR (with a few comments for improvement)