在Java中格式化货币时遇到问题。我正在尝试格式化要打印为货币的数字,所有小数点都对齐:
£ 1.23
£ 12.34
£123.45
调用NumberFormat.getCurrencyInstance().format(n)
会返回一个格式化的字符串,但所有数字都是左对齐的,产生如下输出:
£1.23
£12.34
£123.45
难看。我已阅读this post使用DecimalFormat
提供解决方案,并作为权宜之计我使用DecimalFormat格式化我的数字并稍后添加货币符号,但我想知道是否有人知道某个更简洁的方式来完成同样的事情?
希望一切都清楚,先谢谢你的帮助!
答案 0 :(得分:4)
你可以这样做:
String currencySymbol = Currency.getInstance(Locale.getDefault()).getSymbol();
System.out.printf("%s%8.2f\n", currencySymbol, 1.23);
System.out.printf("%s%8.2f\n", currencySymbol, 12.34);
System.out.printf("%s%8.2f\n", currencySymbol, 123.45);
注意:这仅适用于符号之前金额的货币。
这一事实答案 1 :(得分:0)
试试这个:
final NumberFormat nf = NumberFormat.getCurrencyInstance();
nf.setMinimumIntegerDigits(3);
System.out.println(nf.format(1.23));
System.out.println(nf.format(12.34));
System.out.println(nf.format(123.45));