Skip to content

Commit

Permalink
Fix group_digits for negative integers
Browse files Browse the repository at this point in the history
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
  • Loading branch information
phprus committed Mar 19, 2024
1 parent 365c3fb commit 3c758ad
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
8 changes: 5 additions & 3 deletions include/fmt/format.h
Original file line number Diff line number Diff line change
Expand Up @@ -4130,9 +4130,11 @@ template <typename T> struct formatter<group_digits_view<T>> : formatter<T> {
specs.width_ref, ctx);
detail::handle_dynamic_spec<detail::precision_checker>(
specs.precision, specs.precision_ref, ctx);
return detail::write_int(ctx.out(),
static_cast<detail::uint64_or_128_t<T>>(t.value),
0, specs, detail::digit_grouping<char>("\3", ","));

auto arg = detail::make_write_int_arg(t.value, specs.sign);
return detail::write_int(
ctx.out(), static_cast<detail::uint64_or_128_t<T>>(arg.abs_value),
arg.prefix, specs, detail::digit_grouping<char>("\3", ","));
}
};

Expand Down
3 changes: 3 additions & 0 deletions test/format-test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1837,6 +1837,9 @@ TEST(format_test, bytes) {
TEST(format_test, group_digits_view) {
EXPECT_EQ(fmt::format("{}", fmt::group_digits(10000000)), "10,000,000");
EXPECT_EQ(fmt::format("{:8}", fmt::group_digits(1000)), " 1,000");
EXPECT_EQ(fmt::format("{}", fmt::group_digits(-10000000)), "-10,000,000");
EXPECT_EQ(fmt::format("{:8}", fmt::group_digits(-1000)), " -1,000");
EXPECT_EQ(fmt::format("{:8}", fmt::group_digits(-100)), " -100");
}

#ifdef __cpp_generic_lambdas
Expand Down

0 comments on commit 3c758ad

Please sign in to comment.