| ... | ... | @@ -239,19 +239,25 @@ pub fn formatBuf(buf: []const u8, width: usize, |
| 239 | 239 | pub fn formatFloat(value: var, context: var, output: fn(@typeOf(context), []const u8)->bool) -> bool { |
| 240 | 240 | var buffer: [20]u8 = undefined; |
| 241 | 241 | const float_decimal = errol3(f64(value), buffer[0..]); |
| 242 | | if (!output(context, float_decimal.digits[0..1])) |
| 243 | | return false; |
| 242 | if (float_decimal.exp != 0) { |
| 243 | if (!output(context, float_decimal.digits[0..1])) |
| 244 | return false; |
| 245 | } else { |
| 246 | if (!output(context, "0")) |
| 247 | return false; |
| 248 | } |
| 244 | 249 | if (!output(context, ".")) |
| 245 | 250 | return false; |
| 246 | 251 | if (float_decimal.digits.len > 1) { |
| 247 | | if (!output(context, float_decimal.digits[1 .. math.min(usize(7), float_decimal.digits.len)])) |
| 252 | const start = if (float_decimal.exp == 0) usize(0) else usize(1); |
| 253 | if (!output(context, float_decimal.digits[start .. math.min(usize(7), float_decimal.digits.len)])) |
| 248 | 254 | return false; |
| 249 | 255 | } else { |
| 250 | 256 | if (!output(context, "0")) |
| 251 | 257 | return false; |
| 252 | 258 | } |
| 253 | 259 | |
| 254 | | if (float_decimal.exp != 1) { |
| 260 | if (float_decimal.exp != 1 and float_decimal.exp != 0) { |
| 255 | 261 | if (!output(context, "e")) |
| 256 | 262 | return false; |
| 257 | 263 | if (!formatInt(float_decimal.exp, 10, false, 0, context, output)) |