diff options
-rw-r--r-- | src/vppinfra/format.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/vppinfra/format.c b/src/vppinfra/format.c index 642d3e20654..5cdc3b2428b 100644 --- a/src/vppinfra/format.c +++ b/src/vppinfra/format.c @@ -733,6 +733,12 @@ format_float (u8 * s, f64 x, uword n_fraction_digits, uword output_style) sign = 1; } + /* Round x to closest value with n_fraction_digits digits after '.' */ + f64 rounding = 0.5; + for (uword i = 0; i < n_fraction_digits; i++) + rounding *= 0.1; + x += rounding; + /* Check for not-a-number. */ if (isnan (x)) return format (s, "%cNaN", sign ? '-' : '+'); @@ -789,11 +795,6 @@ format_float (u8 * s, f64 x, uword n_fraction_digits, uword output_style) x -= 1; } - /* Round last printed digit. */ - if (decimal_point <= 0 - && n_fraction_done + 1 == n_fraction_digits && digit < 9) - digit += x >= .5; - vec_add1 (s, '0' + digit); /* Move rightwards towards/away from decimal point. */ |