USD Currency Formatting in Java

妖精的绣舞 提交于 2019-12-28 11:52:48

问题


In Java, how can I efficiently convert floats like 1234.56 and similar BigDecimals into Strings like $1,234.56

I'm looking for the following:

String 12345.67 becomes String $12,345.67

I'm also looking to do this with Float and BigDecimal as well.


回答1:


There's a locale-sensitive idiom that works well:

import java.text.NumberFormat;

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

If your current locale is in the US, the println will print $120.00

Another example:

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

This will print: £120.00




回答2:


DecimalFormat moneyFormat = new DecimalFormat("$0.00");
System.out.println(moneyFormat.format(1234.56));



回答3:


Here is the code according to your input and output::

The output of the program is $12,345.67 for both BigDecimal and number and it works for float also.

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);
    }
}


来源:https://stackoverflow.com/questions/3075743/usd-currency-formatting-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!