2010-03-21 45 views
32

我希望能够编写一个如下所示的时间字符串:1:04:02.1 hours using printf。
当我尝试写这样的事:当使用printf打印浮动时,额外的前导零?

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

我得到:

1:04:2.1 hours 

是否有可能前导零添加到一个浮动的格式?

回答

59

对于%f格式说明符,“2”被视为总共最少字符数,而不是小数点之前的位数。因此,您必须将其替换为4以获得两位前导数字+小数点+一位十进制数字。

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

很好,有用。为2位小数,那么你需要%05.2f – steveh 2013-03-14 10:05:50

+0

有非浮动的这个也很好! – wuppi 2016-08-24 12:59:44

12

尝试%04.1f而不是%02.1f。这里的“4”表示至少要打印4个字符,“2.1”有3个(> 2)个字符,因此要启用需要的填充零。0

相关问题