| ... | @@ -627,10 +627,16 @@ pub fn Serializer(Writer: type) type { | ... | @@ -627,10 +627,16 @@ pub fn Serializer(Writer: type) type { |
| 627 | return self.writer.writeAll("inf"); | 627 | return self.writer.writeAll("inf"); |
| 628 | } else if (std.math.isNegativeInf(val)) { | 628 | } else if (std.math.isNegativeInf(val)) { |
| 629 | return self.writer.writeAll("-inf"); | 629 | return self.writer.writeAll("-inf"); |
| | 630 | } else if (std.math.isNegativeZero(val)) { |
| | 631 | return self.writer.writeAll("-0.0"); |
| | 632 | } else { |
| | 633 | try std.fmt.format(self.writer, "{d}", .{val}); |
| | 634 | }, |
| | 635 | .comptime_float => if (val == 0) { |
| | 636 | return self.writer.writeAll("0"); |
| 630 | } else { | 637 | } else { |
| 631 | try std.fmt.format(self.writer, "{d}", .{val}); | 638 | try std.fmt.format(self.writer, "{d}", .{val}); |
| 632 | }, | 639 | }, |
| 633 | .comptime_float => try std.fmt.format(self.writer, "{d}", .{val}), | | |
| 634 | else => comptime unreachable, | 640 | else => comptime unreachable, |
| 635 | } | 641 | } |
| 636 | } | 642 | } |
| ... | @@ -2103,10 +2109,11 @@ test "std.zon stringify primitives" { | ... | @@ -2103,10 +2109,11 @@ test "std.zon stringify primitives" { |
| 2103 | \\ .b = 0.3333333333333333333333333333333333, | 2109 | \\ .b = 0.3333333333333333333333333333333333, |
| 2104 | \\ .c = 3.1415926535897932384626433832795028, | 2110 | \\ .c = 3.1415926535897932384626433832795028, |
| 2105 | \\ .d = 0, | 2111 | \\ .d = 0, |
| 2106 | \\ .e = -0, | 2112 | \\ .e = 0, |
| 2107 | \\ .f = inf, | 2113 | \\ .f = -0.0, |
| 2108 | \\ .g = -inf, | 2114 | \\ .g = inf, |
| 2109 | \\ .h = nan, | 2115 | \\ .h = -inf, |
| | 2116 | \\ .i = nan, |
| 2110 | \\} | 2117 | \\} |
| 2111 | , | 2118 | , |
| 2112 | .{ | 2119 | .{ |
| ... | @@ -2115,9 +2122,10 @@ test "std.zon stringify primitives" { | ... | @@ -2115,9 +2122,10 @@ test "std.zon stringify primitives" { |
| 2115 | .c = std.math.pi, | 2122 | .c = std.math.pi, |
| 2116 | .d = 0.0, | 2123 | .d = 0.0, |
| 2117 | .e = -0.0, | 2124 | .e = -0.0, |
| 2118 | .f = std.math.inf(f32), | 2125 | .f = @as(f128, -0.0), |
| 2119 | .g = -std.math.inf(f32), | 2126 | .g = std.math.inf(f32), |
| 2120 | .h = std.math.nan(f32), | 2127 | .h = -std.math.inf(f32), |
| | 2128 | .i = std.math.nan(f32), |
| 2121 | }, | 2129 | }, |
| 2122 | .{}, | 2130 | .{}, |
| 2123 | ); | 2131 | ); |