我試圖讓小數點8.6
渲染到一個左零填充字符串,即08.6
。爲什麼不String.format()給我一個左零填充浮點輸出?
爲什麼以下方式似乎不起作用?
double number = 8.6;
String.format("%03.1f", number); //expect "08.6", get "8.6"
格式化字符串似乎是正確的。我究竟做錯了什麼?
我試圖讓小數點8.6
渲染到一個左零填充字符串,即08.6
。爲什麼不String.format()給我一個左零填充浮點輸出?
爲什麼以下方式似乎不起作用?
double number = 8.6;
String.format("%03.1f", number); //expect "08.6", get "8.6"
格式化字符串似乎是正確的。我究竟做錯了什麼?
它是給你一個左零填充浮點輸出,它只是的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
它包含所有小數位! – laune 2014-12-05 07:22:42
我應該已經意識到這一點是對寬度計數的。感謝您的澄清! – 2014-12-05 07:38:30
你需要給作爲%04.1f
得到輸出08.6
。
爲什麼你寫四個時寫三個? – laune 2014-12-05 07:19:15
因爲我不知道朝向寬度計算的小數*點*。感謝智慧,非常有幫助。/s – 2014-12-05 07:37:29
那麼,一個點很小,它可以很容易被忽略;-)而「寬度」真的*是*寬度:積分部分,小數點,小數位數(!)甚至符號,如果是負數。 – laune 2014-12-05 07:39:43