diff options
| author | MarenFayre <82266301+MarenFayre@users.noreply.github.com> | 2023-01-10 15:03:53 +0100 |
|---|---|---|
| committer | MarenFayre <82266301+MarenFayre@users.noreply.github.com> | 2023-01-10 15:03:53 +0100 |
| commit | fd4633eb2594a835ddc40e6f7cfeccb1590e03c9 (patch) | |
| tree | b0de5e9ad832ab974f29eb126a48dc00ad83699d | |
| parent | b0756f9e29e434ed69d2822d9773e78ad42737a2 (diff) | |
Clean up float_fmt logic
| -rw-r--r-- | core/fmt/fmt.odin | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin index 68e498a36..26ddca0dd 100644 --- a/core/fmt/fmt.odin +++ b/core/fmt/fmt.odin @@ -866,23 +866,16 @@ _pad :: proc(fi: ^Info, s: string) { } _fmt_float_as :: proc(fi: ^Info, v: f64, bit_size: int, verb: rune, float_fmt: byte) { - prec: int = 3 - if fi.prec_set { - prec = fi.prec - } + prec := fi.prec if fi.prec_set else 3 buf: [386]byte // Can return "NaN", "+Inf", "-Inf", "+<value>", "-<value>". str := strconv.append_float(buf[:], v, float_fmt, prec, bit_size) - assert(len(str) >= 2) - - if !fi.plus { // '+' modifier means preserve all signs. - switch { - case str[0] == 'N': // Not a "NaN" - case str[1] == 'I': // Not a "±Inf" - case str[0] == '+': // Found "+<value>" - // Strip + sign - str = str[1:] + + if !fi.plus { + // Strip sign from "+<value>" but not "+Inf". + if str[0] == '+' && str[1] != 'I' { + str = str[1:] } } |