修改NumberFormat.getCurrencyInstance()返回的NumberFormat

时间:2012-12-24 15:54:39

标签: java currency-formatting

在Java中格式化货币时遇到问题。我正在尝试格式化要打印为货币的数字,所有小数点都对齐:

£  1.23
£ 12.34
£123.45

调用NumberFormat.getCurrencyInstance().format(n)会返回一个格式化的字符串,但所有数字都是左对齐的,产生如下输出:

£1.23
£12.34
£123.45

难看。我已阅读this post使用DecimalFormat提供解决方案,并作为权宜之计我使用DecimalFormat格式化我的数字并稍后添加货币符号,但我想知道是否有人知道某个更简洁的方式来完成同样的事情?

希望一切都清楚,先谢谢你的帮助!

2 个答案:

答案 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);

注意:这仅适用于符号之前金额的货币。

另请注意doubles are not suitable for representing currency

这一事实

答案 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));