Commit 40a79756 authored by Victor Zverovich's avatar Victor Zverovich

Remove trailing zeros

parent cb46397d
...@@ -1213,6 +1213,8 @@ It grisu2_prettify(const char* digits, int size, int exp, It it, ...@@ -1213,6 +1213,8 @@ It grisu2_prettify(const char* digits, int size, int exp, It it,
if (params.num_digits >= 0 && params.num_digits < num_zeros) if (params.num_digits >= 0 && params.num_digits < num_zeros)
num_zeros = params.num_digits; num_zeros = params.num_digits;
it = std::fill_n(it, num_zeros, static_cast<Char>('0')); it = std::fill_n(it, num_zeros, static_cast<Char>('0'));
if (!params.trailing_zeros)
while (size > 0 && digits[size - 1] == '0') --size;
it = copy_str<Char>(digits, digits + size, it); it = copy_str<Char>(digits, digits + size, it);
} }
return it; return it;
......
...@@ -1488,6 +1488,7 @@ TEST(FormatterTest, PrecisionRounding) { ...@@ -1488,6 +1488,7 @@ TEST(FormatterTest, PrecisionRounding) {
EXPECT_EQ("0.002", format("{:.3f}", 0.0015)); EXPECT_EQ("0.002", format("{:.3f}", 0.0015));
EXPECT_EQ("1.000", format("{:.3f}", 0.9999)); EXPECT_EQ("1.000", format("{:.3f}", 0.9999));
EXPECT_EQ("0.00123", format("{:.3}", 0.00123)); EXPECT_EQ("0.00123", format("{:.3}", 0.00123));
EXPECT_EQ("0.1", format("{:.16g}", 0.1));
// Trigger rounding error in Grisu by a carefully chosen number. // Trigger rounding error in Grisu by a carefully chosen number.
auto n = 3788512123356.985352; auto n = 3788512123356.985352;
char buffer[64]; char buffer[64];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment