py/formatfloat: Fix number of digits and exponent sign when rounding.

This patch fixes 2 things when printing a floating-point number that
requires rounding up of the mantissa:
- retain the correct precision; eg 0.99 becomes 1.0, not 1.00
- if the exponent goes from -1 to 0 then render it as +0, not -0
This commit is contained in:
Damien George
2017-06-13 13:36:56 +10:00
parent d42b80fd64
commit 6ed4581f54
4 changed files with 11 additions and 5 deletions

View File

@@ -376,11 +376,16 @@ int mp_format_float(FPTYPE f, char *buf, size_t buf_size, char fmt, int prec, ch
rs[1] = '0';
if (e_sign == '-') {
e--;
if (e == 0) {
e_sign = '+';
}
} else {
e++;
}
} else {
// Need at extra digit at the end to make room for the leading '1'
s++;
}
s++;
char *ss = s;
while (ss > rs) {
*ss = ss[-1];