web-dev-qa-db-ja.com

JavaでのUSD通貨のフォーマット

Javaでは、1234.56や類似のBigDecimalのような浮動小数点を$1,234.56のような文字列に効率的に変換するにはどうすればよいですか。

私は以下を探しています:

文字列12345.67は文字列$12,345.67になります

また、FloatBigDecimalを使用してこれを行うことも検討しています。

26
Tidbtis

適切に機能するロケール依存のイディオムがあります。

import Java.text.NumberFormat;

// Get a currency formatter for the current locale.
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(120.00));

現在のロケールが米国にある場合、printlnは$ 120.00を出力します

もう一つの例:

import Java.text.NumberFormat;
import Java.util.Locale;

Locale locale = new Locale("en", "UK");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(120.00));

これは印刷されます:£120.00

33
Brian Clapper
DecimalFormat moneyFormat = new DecimalFormat("$0.00");
System.out.println(moneyFormat.format(1234.56));
8
krock

入力と出力に応じたコードは次のとおりです。:

プログラムの出力は、BigDecimalと数値の両方で$ 12,345.67で、floatでも機能します。

import Java.math.BigDecimal;
import Java.text.DecimalFormat;
import Java.text.DecimalFormatSymbols;

public class test {
    public static void main(String[] args) {
        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
        symbols.setGroupingSeparator(',');
        String pattern = "$#,##0.###";
        DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);
        BigDecimal bigDecimal = new BigDecimal("12345.67");

        String bigDecimalConvertedValue = decimalFormat.format(bigDecimal);
        String convertedValue = decimalFormat.format(12345.67);

        System.out.println(bigDecimalConvertedValue);
        System.out.println(convertedValue);
    }
}
0
ABHISHEK HONEY