4 java string decimal string-formatting
我正在尝试打印出一个始终为 4 位并且有 2 个小数位的双精度数。
例如,如果数字是105.456789
我String.Format会打印出 0105.45 我理解这%.2f允许两位小数问题。我也明白这%04d允许 4 位数的问题但是,我一生都无法弄清楚如何将两者结合起来。
我试图做一个双String.format
我试图做一个String.format和同时使用%04d和%.2f
System.out.println(String.format("Gross Pay: $%.2f %04d", 105.456789));
Run Code Online (Sandbox Code Playgroud)
我希望输出为 0105.45 但我什至无法编译
两件事:首先,您的代码确实可以编译。但它在运行时立即失败:
线程“main”中的异常 java.util.MissingFormatArgumentException: 格式说明符 '%04d'
因为:您在格式规范中使用了两种模式,但只提供了一个值。
是的,%.2f %04d这是两个规格,而不是一个。
(请理解这一点:编译时错误和运行时异常之间有明显的区别。理解这种区别很重要。)
回到“真正”的问题。因此,您不必为一个值使用两种模式,而是必须使用一种规范,例如:
System.out.println(String.format("Gross Pay: $%07.2f", 105.456789));
Run Code Online (Sandbox Code Playgroud)
总工资:0105.46 美元
“技巧”:“点”前面的那个数字需要考虑整体所需的长度。总的来说,你想要:4 位数字+点+2 位数字,产生 7 个字符。和 0 预先填写。
因此,您的规范需要以“07”开头。
| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |