py/formatfloat: Fix rounding of %f format with edge-case FP values.
Prior to this patch the %f formatting of some FP values could be off by up to 1, eg '%.0f' % 123 would return "122" (unix x64). Depending on the FP precision (single vs double) certain numbers would format correctly, but others wolud not. This patch should fix all cases of rounding for %f.
This commit is contained in:
@@ -341,7 +341,7 @@ int mp_format_float(FPTYPE f, char *buf, size_t buf_size, char fmt, int prec, ch
|
||||
// Round
|
||||
// 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)) {
|
||||
if ((org_fmt != 'f' || e <= num_digits) && f >= FPCONST(5.0)) {
|
||||
char *rs = s;
|
||||
rs--;
|
||||
while (1) {
|
||||
|
||||
Reference in New Issue
Block a user