Answers:
public static String currencyFormat(BigDecimal n) {
return NumberFormat.getCurrencyInstance().format(n);
}
它将使用JVM当前的默认值Locale
来选择您的货币符号。或者您可以指定一个Locale
。
NumberFormat.getInstance(Locale.US)
有关更多信息,请参见NumberFormat
class。
要设置千位分隔符,说123,456.78
您必须使用DecimalFormat:
DecimalFormat df = new DecimalFormat("#,###.00");
System.out.println(df.format(new BigDecimal(123456.75)));
System.out.println(df.format(new BigDecimal(123456.00)));
System.out.println(df.format(new BigDecimal(123456123456.78)));
结果如下:
123,456.75
123,456.00
123,456,123,456.78
尽管设置了#,###.00
遮罩,但它也成功地格式化了较长的值。请注意,结果中的逗号(,)分隔符取决于您的语言环境。对于俄罗斯语言环境,可能只是space()。
"#,##0.00"
。
与@Jeff_Alieffson的回答类似,但不依赖默认值 Locale
:
使用DecimalFormatSymbols
显式的语言环境:
DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance(new Locale("ru", "RU"));
或明确的分隔符:
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
decimalFormatSymbols.setGroupingSeparator(' ');
然后:
new DecimalFormat("#,##0.00", decimalFormatSymbols).format(new BigDecimal("12345"));
结果:
12 345.00