Opened 6 months ago

Last modified 5 months ago

#28280 new Bug

numberformat.format() incorrectly formats large/tiny floats in scientific notation

Reported by: Wil Tan Owned by: nobody
Component: Utilities Version: 1.11
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no

Description (last modified by Tim Graham)

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 (3)

comment:1 Changed 6 months ago by Tim Graham

Component: UncategorizedUtilities
Description: modified (diff)
Triage Stage: UnreviewedAccepted
Type: UncategorizedBug

comment:2 Changed 6 months ago by Tim Graham

Has patch: set
Patch needs improvement: set
Summary: numberformat.format does not handle scientific notation correctlynumberformat.format() incorrectly formats large/tiny floats in scientific notation

PR (with a few comments for improvement)

comment:3 Changed 5 months ago by Tim Graham <timograham@…>

In b94d99af:

Refs #28280 -- Added more tests for utils.numberformat.format().

Note: See TracTickets for help on using tickets.
Back to Top