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 };
}