我试图让小数点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