mirror of
https://github.com/fmtlib/fmt.git
synced 2024-12-24 12:14:26 +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
|
// 1234e-6 -> 0.001234
|
||||||
*it++ = static_cast<Char>('0');
|
*it++ = static_cast<Char>('0');
|
||||||
int num_zeros = -full_exp;
|
int num_zeros = -full_exp;
|
||||||
if (specs_.precision >= 0 && specs_.precision < num_zeros)
|
|
||||||
num_zeros = specs_.precision;
|
|
||||||
int num_digits = num_digits_;
|
int num_digits = num_digits_;
|
||||||
|
if (num_digits == 0 && specs_.precision >= 0 &&
|
||||||
|
specs_.precision < num_zeros) {
|
||||||
|
num_zeros = specs_.precision;
|
||||||
|
}
|
||||||
// Remove trailing zeros.
|
// Remove trailing zeros.
|
||||||
if (!specs_.showpoint)
|
if (!specs_.showpoint)
|
||||||
while (num_digits > 0 && digits_[num_digits - 1] == '0') --num_digits;
|
while (num_digits > 0 && digits_[num_digits - 1] == '0') --num_digits;
|
||||||
|
@ -1125,6 +1125,7 @@ TEST(FormatterTest, Precision) {
|
|||||||
format("{:.838A}", -2.14001164E+38));
|
format("{:.838A}", -2.14001164E+38));
|
||||||
EXPECT_EQ("123.", format("{:#.0f}", 123.0));
|
EXPECT_EQ("123.", format("{:#.0f}", 123.0));
|
||||||
EXPECT_EQ("1.23", format("{:.02f}", 1.234));
|
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)),
|
EXPECT_THROW_MSG(format("{0:.2}", reinterpret_cast<void*>(0xcafe)),
|
||||||
format_error,
|
format_error,
|
||||||
|
Loading…
Reference in New Issue
Block a user