Дополнительные лидирующие нули при печати с плавающей запятой с использованием printf? - PullRequest
36 голосов
/ 21 марта 2010

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

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

Я получаю:

1:04:2.1 hours

Можно ли добавить начальные нули в форматирование с плавающей точкой?

Ответы [ 2 ]

67 голосов
/ 21 марта 2010

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

printf("%d:%02d:%04.1f hours\n", 1, 4, 2.123456);
15 голосов
/ 21 марта 2010

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

...