From 3c4c0698021a9eed5ab66b1c47c0180dd1fabcf4 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Sun, 22 Nov 2015 18:09:28 +0200
Subject: [PATCH] py/formatfloat: Workaround (fix?) incorrect rounding for %f
 format.

---
 py/formatfloat.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/py/formatfloat.c b/py/formatfloat.c
index ac5a74e8f..ec9090652 100644
--- a/py/formatfloat.c
+++ b/py/formatfloat.c
@@ -308,7 +308,9 @@ int mp_format_float(FPTYPE f, char *buf, size_t buf_size, char fmt, int prec, ch
     }
 
     // Round
-    if (f >= FPCONST(5.0)) {
+    // If we print non-exponential format (i.e. 'f'), but a digit we're going
+    // to round by (e) is too far away, then there's nothing to round.
+    if ((org_fmt != 'f' || e <= 1) && f >= FPCONST(5.0)) {
         char *rs = s;
         rs--;
         while (1) {
-- 
GitLab