2010-03-21 78 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

相關問題