2014-12-05 42 views
1

我試圖讓小數點8.6渲染到一個左零填充字符串,即08.6爲什麼不String.format()給我一個左零填充浮點輸出?

爲什麼以下方式似乎不起作用?

double number = 8.6; 
String.format("%03.1f", number); //expect "08.6", get "8.6" 

格式化字符串似乎是正確的。我究竟做錯了什麼?

+0

爲什麼你寫四個時寫三個? – laune 2014-12-05 07:19:15

+1

因爲我不知道朝向寬度計算的小數*點*。感謝智慧,非常有幫助。/s – 2014-12-05 07:37:29

+0

那麼,一個點很小,它可以很容易被忽略;-)而「寬度」真的*是*寬度:積分部分,小數點,小數位數(!)甚至符號,如果是負數。 – laune 2014-12-05 07:39:43

回答

4

給你一個左零填充浮點輸出,它只是的3領域寬度包括小數點和小數部分(和符號,如果是負的),因此需要使用%04.1f代替該特定值。

的輸出:

public class Test { 
    public static void main(String[] args) { 
     double number = 8.6; 
     System.out.println(String.format("%04.1f", number)); 
    } 
} 

是:

08.6 
+0

它包含所有小數位! – laune 2014-12-05 07:22:42

+0

我應該已經意識到這一點是對寬度計數的。感謝您的澄清! – 2014-12-05 07:38:30

0

你需要給作爲%04.1f得到輸出08.6

相關問題