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:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user