summaryrefslogtreecommitdiffstatshomepage
path: root/tests/float/float_format_ftoe.py
diff options
context:
space:
mode:
authorDan Ellis <dan.ellis@gmail.com>2022-07-12 09:48:38 -0400
committerDamien George <damien@micropython.org>2022-07-26 22:23:47 +1000
commitf9cbe6bc47dd4f5b8e85178caecd6f0de22b4c34 (patch)
tree7e4e3ad1a60aecb364528e609fddb3721fdb5af8 /tests/float/float_format_ftoe.py
parentb22abcdbbedb0f7583b19031fd65e19b3883671d (diff)
downloadmicropython-f9cbe6bc47dd4f5b8e85178caecd6f0de22b4c34.tar.gz
micropython-f9cbe6bc47dd4f5b8e85178caecd6f0de22b4c34.zip
py/formatfloat: Format all whole-number floats exactly.
Formerly, py/formatfloat would print whole numbers inaccurately with nonzero digits beyond the decimal place. This resulted from its strategy of successive scaling of the argument by 0.1 which cannot be exactly represented in floating point. The change in this commit avoids scaling until the value is smaller than 1, so all whole numbers print with zero fractional part. Fixes issue #4212. Signed-off-by: Dan Ellis dan.ellis@gmail.com
Diffstat (limited to 'tests/float/float_format_ftoe.py')
-rw-r--r--tests/float/float_format_ftoe.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/tests/float/float_format_ftoe.py b/tests/float/float_format_ftoe.py
new file mode 100644
index 0000000000..bc4e5a4a53
--- /dev/null
+++ b/tests/float/float_format_ftoe.py
@@ -0,0 +1,4 @@
+# check a case where rounding was suppressed inappropriately when "f" was
+# promoted to "e" for large numbers.
+v = 8.888e32
+print("%.2f" % v) # '%.2f' format with e32 becomes '%.2e', expect 8.89e+32.