1

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

£  1.23
£ 12.34
£123.45

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

£1.23
£12.34
£123.45

丑陋。我已经阅读了这篇文章,它提出了一个使用 a 的解决方案DecimalFormat,作为权宜之计,我正在使用 DecimalFormat 格式化我的数字并在稍后添加货币符号,但我想知道是否有人知道完成同样事情的更简洁的方法?

希望一切都清楚,提前感谢您的帮助!

4

2 回答 2

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 不适合表示货币的事实。

于 2012-12-24T16:19:58.350 回答
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));
于 2012-12-24T16:11:37.020 回答