diff --git a/py/formatfloat.c b/py/formatfloat.c index ac5a74e8fc..ec90906527 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) {