aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/fmt/fmt.odin19
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:]
}
}