mirror of
https://github.com/fmtlib/fmt.git
synced 2024-12-24 03:17:53 +00:00
Fix handling of small precision in general format
This commit is contained in:
parent
01a172c969
commit
69779b4ed6
@ -1152,9 +1152,11 @@ template <typename Char> class float_writer {
|
||||
// 1234e-6 -> 0.001234
|
||||
*it++ = static_cast<Char>('0');
|
||||
int num_zeros = -full_exp;
|
||||
if (specs_.precision >= 0 && specs_.precision < num_zeros)
|
||||
num_zeros = specs_.precision;
|
||||
int num_digits = num_digits_;
|
||||
if (num_digits == 0 && specs_.precision >= 0 &&
|
||||
specs_.precision < num_zeros) {
|
||||
num_zeros = specs_.precision;
|
||||
}
|
||||
// Remove trailing zeros.
|
||||
if (!specs_.showpoint)
|
||||
while (num_digits > 0 && digits_[num_digits - 1] == '0') --num_digits;
|
||||
|
@ -1125,6 +1125,7 @@ TEST(FormatterTest, Precision) {
|
||||
format("{:.838A}", -2.14001164E+38));
|
||||
EXPECT_EQ("123.", format("{:#.0f}", 123.0));
|
||||
EXPECT_EQ("1.23", format("{:.02f}", 1.234));
|
||||
EXPECT_EQ("0.001", format("{:.1g}", 0.001));
|
||||
|
||||
EXPECT_THROW_MSG(format("{0:.2}", reinterpret_cast<void*>(0xcafe)),
|
||||
format_error,
|
||||
|
Loading…
Reference in New Issue
Block a user