QUERY · ISSUE
Single precision floating point formatting issues
docs
While investigating #1435 I ran into some other formatting issues. The output isn't necessarily wrong, but it doesn't match CPython either (although I am concerned about the outputting more data than requested potentially causing a buffer overflow).
1 - Outputting more data than requested.
On pyboard:
>>> '{:.4e}'.format(9.99999e-5)
'1.00000e-04'
On CPython:
>>> '{:.4e}'.format(9.99999e-5)
'1.0000e-04'
2 - making the wrong choice about when to use e notation:
pyboard:
>>> '%5.g' % 9.99999
' 10'
CPython:
>>> '%5.g' % 9.99999
'1e+01'
3 - Failing to normalize when rounding:
pyboard:
>>> '%5.e' % 9.99999
'10e+00'
CPython:
>>> '%5.e' % 9.99999
'1e+01'
CANDIDATE · PULL REQUEST
Fix floating point number near 1.0
In particular, numbers which are less than 1.0 but which
round up to 1.0.
This also makes those numbers which round up to 1.0 to
print with e+00 rather than e-00 for those formats which
print exponents.
Fixes #1178