Дополнительные ведущие нули при печати float с помощью printf?

Я хотел бы иметь возможность написать строку времени, которая выглядит так:1:04:02.1 hours С помощью функции printf.
Когда я пытаюсь написать что-то вроде этого:

printf("%d:%02d:%02.1f hours\n", 1, 4, 2.123456);

Я:

1:04:2.1 hours

можно ли добавить ведущие нули в форматирование float?

2 ответов


С %f спецификатор формата, "2" рассматривается как минимальное количество символов в целом, а не количество цифр до десятичной точки. Таким образом, вы должны заменить его на 4, чтобы получить две ведущие цифры + десятичную точку + одну десятичную цифру.

printf("%d:%02d:%04.1f hours\n", 1, 4, 2.123456);

попробовать %04.1f вместо %02.1f. "4" здесь означает, что будет напечатано не менее 4 символов, а " 2.1 " имеет 3 (> 2) символа, поэтому для включения заполнения нулей вам нужно 4.