2014-12-05 47 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

相关问题