fixed: `conv.f64_to_str`
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 19 May 2023 20:28:27 +0000 (15:28 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 19 May 2023 20:28:27 +0000 (15:28 -0500)
core/conv/conv.onyx

index 88378619beacaabc11faff4a204022b7de1a7c22..18737c3b8d450ead35ee4eea6053c8966d9e2539 100644 (file)
@@ -298,19 +298,22 @@ f64_to_str :: (f: f64, buf: [] u8, digits_after_decimal := 4) -> str {
 
     s1 := i64_to_str(~~int_part, 10, buf);
     for i: 0 .. s1.count do buf.data[i + len] = s1.data[i];
-    buf.data[s1.count + len] = #char ".";
-    len += s1.count + 1;
 
-    digits := "0123456789";
+    if digits_after_decimal > 0 {
+        buf.data[s1.count + len] = #char ".";
+        len += s1.count + 1;
 
-    for i: digits_after_decimal {
-        dec_part *= 10;
-        v := math.trunc(dec_part);
-        dec_part -= v;
+        digits := "0123456789";
 
-        buf.data[len + i] = digits[cast(i32) v];
+        for i: digits_after_decimal {
+            dec_part *= 10;
+            v := math.trunc(dec_part);
+            dec_part -= v;
+
+            buf.data[len + i] = digits[cast(i32) v];
+        }
+        len += digits_after_decimal;
     }
-    len += digits_after_decimal;
 
     return str.{ buf.data, len };
 }