Java中的美元货币格式

在Java中,我如何有效地将像1234.56和类似BigDecimals的浮点数转换为字符串,如$1,234.56

我正在寻找以下内容:

字符串12345.67变为String $12,345.67

我也希望用FloatBigDecimal来做这件事。

有一个适合语言环境的习语很好用:

 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

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

这是根据您的输入和输出的代码::

对于BigDecimal和数字,程序的输出为12,345.67美元,它也适用于浮点数。

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