1

Javaでの通貨のフォーマットに問題があります。すべての小数点を揃えて、通貨として印刷する数値をフォーマットしようとしています。

£  1.23
£ 12.34
£123.45

呼び出すNumberFormat.getCurrencyInstance().format(n)と、フォーマットされた文字列が返されますが、すべての数値は左揃えになり、次のような出力が生成されます。

£1.23
£12.34
£123.45

ぶさいくな。を使用して解決策を提示するこの投稿を読み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);

注: これは、金額の前に記号が表示される通貨に対してのみ機能します。

double は currency を表すのに適していないという事実にも注意してください。

于 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 に答える