authorgravatar for xq@random-projects.netFelix "xq" Queißner <xq@random-projects.net> 2020-08-09 12:48:26+02:00
committergravatar for xq@random-projects.netFelix "xq" Queißner <xq@random-projects.net> 2020-08-09 12:48:26+02:00
log06a1184c92dd51630c542df6f34b09ec4dad341b
tree2e59dcb38f2fd72b7934fca8c5d9c49991dd57d8
parentfd47839064775c0cc956f12a012f0893e1f3a440

Fixes double alignment


1 files changed, 22 insertions(+), 2 deletions(-)

lib/std/fmt.zig+22-2
......@@ -560,13 +560,19 @@ fn formatFloatValue(
560560 options: FormatOptions,
561561 writer: anytype,
562562) !void {
563 // this buffer should be enough to display all decimal places of a decimal f64 number.
564 var buf: [512]u8 = undefined;
565 var buf_stream = std.io.fixedBufferStream(&buf);
566
563567 if (fmt.len == 0 or comptime std.mem.eql(u8, fmt, "e")) {
564 return formatFloatScientific(value, options, writer);
568 try formatFloatScientific(value, options, buf_stream.writer());
565569 } else if (comptime std.mem.eql(u8, fmt, "d")) {
566 return formatFloatDecimal(value, options, writer);
570 try formatFloatDecimal(value, options, buf_stream.writer());
567571 } else {
568572 @compileError("Unknown format string: '" ++ fmt ++ "'");
569573 }
574
575 return formatBuf(buf[0..buf_stream.pos], options, writer);
570576}
571577
572578pub fn formatText(
......@@ -1791,3 +1797,17 @@ test "padding" {
17911797 try testFmt("==================Filled", "{:=>24}", .{"Filled"});
17921798 try testFmt(" Centered ", "{:^24}", .{"Centered"});
17931799}
1800
1801test "decimal float padding" {
1802 var number: f32 = 3.1415;
1803 try testFmt("left-pad: **3.141\n", "left-pad: {d:*>7.3}\n", .{number});
1804 try testFmt("center-pad: *3.141*\n", "center-pad: {d:*^7.3}\n", .{number});
1805 try testFmt("right-pad: 3.141**\n", "right-pad: {d:*<7.3}\n", .{number});
1806}
1807
1808test "sci float padding" {
1809 var number: f32 = 3.1415;
1810 try testFmt("left-pad: **3.141e+00\n", "left-pad: {e:*>11.3}\n", .{number});
1811 try testFmt("center-pad: *3.141e+00*\n", "center-pad: {e:*^11.3}\n", .{number});
1812 try testFmt("right-pad: 3.141e+00**\n", "right-pad: {e:*<11.3}\n", .{number});
1813}