%.f should have zero precision, not default precision

This commit is contained in:
Victor Zverovich 2018-01-27 17:56:19 -08:00
parent a09f748894
commit 5060568f72
2 changed files with 5 additions and 0 deletions

View File

@ -454,6 +454,8 @@ void basic_printf_context<OutputIt, Char, AF>::format() {
++it; ++it;
spec.precision_ = spec.precision_ =
visit(internal::PrintfPrecisionHandler(), get_arg(it)); visit(internal::PrintfPrecisionHandler(), get_arg(it));
} else {
spec.precision_ = 0;
} }
} }

View File

@ -397,6 +397,9 @@ TEST(PrintfTest, long_long) {
TEST(PrintfTest, Float) { TEST(PrintfTest, Float) {
EXPECT_PRINTF("392.650000", "%f", 392.65); EXPECT_PRINTF("392.650000", "%f", 392.65);
EXPECT_PRINTF("392.65", "%.2f", 392.65);
EXPECT_PRINTF("392.6", "%.1f", 392.65);
EXPECT_PRINTF("393", "%.f", 392.65);
EXPECT_PRINTF("392.650000", "%F", 392.65); EXPECT_PRINTF("392.650000", "%F", 392.65);
char buffer[BUFFER_SIZE]; char buffer[BUFFER_SIZE];
safe_sprintf(buffer, "%e", 392.65); safe_sprintf(buffer, "%e", 392.65);