From 8c111f1baf45ef8da4677c611b6396be07f7797a Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Thu, 9 May 2024 18:37:34 -0400 Subject: [PATCH] Fix `%e` printing incorrect precision For example, `%.2e` with 30.56 as the value would produce `30.60e+01`, as opposed to C's printf producing `30.6e+01`. --- core/strconv/generic_float.odin | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/strconv/generic_float.odin b/core/strconv/generic_float.odin index 4ad42a647..6dc11c0be 100644 --- a/core/strconv/generic_float.odin +++ b/core/strconv/generic_float.odin @@ -104,8 +104,7 @@ generic_ftoa :: proc(buf: []byte, val: f64, fmt: byte, precision, bit_size: int) } else { switch fmt { case 'e', 'E': - prec += 1 - decimal.round(d, prec) + decimal.round(d, prec + 1) case 'f', 'F': decimal.round(d, d.decimal_point+prec) case 'g', 'G':