mirror of
https://github.com/fmtlib/fmt.git
synced 2025-04-16 23:42:38 +00:00
Fix handling of thousands separator (#353)
This commit is contained in:
parent
116914a949
commit
0e6df7e511
@ -933,6 +933,7 @@ inline void format_decimal(Char *buffer, UInt value, unsigned num_digits,
|
|||||||
}
|
}
|
||||||
unsigned index = static_cast<unsigned>(value * 2);
|
unsigned index = static_cast<unsigned>(value * 2);
|
||||||
*--buffer = Data::DIGITS[index + 1];
|
*--buffer = Data::DIGITS[index + 1];
|
||||||
|
thousands_sep(buffer);
|
||||||
*--buffer = Data::DIGITS[index];
|
*--buffer = Data::DIGITS[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2780,7 +2781,7 @@ void BasicWriter<Char>::write_int(T value, Spec spec) {
|
|||||||
unsigned num_digits = internal::count_digits(abs_value);
|
unsigned num_digits = internal::count_digits(abs_value);
|
||||||
fmt::StringRef sep = internal::thousands_sep(std::localeconv());
|
fmt::StringRef sep = internal::thousands_sep(std::localeconv());
|
||||||
unsigned size = static_cast<unsigned>(
|
unsigned size = static_cast<unsigned>(
|
||||||
num_digits + sep.size() * (num_digits - 1) / 3);
|
num_digits + sep.size() * ((num_digits - 1) / 3));
|
||||||
CharPtr p = prepare_int_buffer(size, spec, prefix, prefix_size) + 1;
|
CharPtr p = prepare_int_buffer(size, spec, prefix, prefix_size) + 1;
|
||||||
internal::format_decimal(get(p), abs_value, 0, internal::ThousandsSep(sep));
|
internal::format_decimal(get(p), abs_value, 0, internal::ThousandsSep(sep));
|
||||||
break;
|
break;
|
||||||
|
@ -1229,7 +1229,9 @@ TEST(FormatterTest, FormatIntLocale) {
|
|||||||
lconv lc = {};
|
lconv lc = {};
|
||||||
char sep[] = "--";
|
char sep[] = "--";
|
||||||
lc.thousands_sep = sep;
|
lc.thousands_sep = sep;
|
||||||
EXPECT_CALL(mock, localeconv()).WillOnce(testing::Return(&lc));
|
EXPECT_CALL(mock, localeconv()).Times(3).WillRepeatedly(testing::Return(&lc));
|
||||||
|
EXPECT_EQ("123", format("{:n}", 123));
|
||||||
|
EXPECT_EQ("1--234", format("{:n}", 1234));
|
||||||
EXPECT_EQ("1--234--567", format("{:n}", 1234567));
|
EXPECT_EQ("1--234--567", format("{:n}", 1234567));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user