无法格式化BigDecimal:方法抛出';java.lang.NumberFormatException';例外

无法格式化BigDecimal:方法抛出';java.lang.NumberFormatException';例外,java,bigdecimal,decimalformat,Java,Bigdecimal,Decimalformat,我有以下代码: DecimalFormat df = new DecimalFormat("####.00"); BigDecimal amount = new BigDecimal("0"); new BigDecimal(df.format(amount)); 这是我的输出: ",00" // Method threw 'java.lang.NumberFormatException' exception. 但我需要的是: 0

我有以下代码:

DecimalFormat df = new DecimalFormat("####.00");
BigDecimal amount = new BigDecimal("0");

new BigDecimal(df.format(amount));
这是我的输出:

",00" // Method threw 'java.lang.NumberFormatException' exception.
但我需要的是:

0.00 (or something like that)

对不起,我没有任何进一步的信息。

您的
区域设置
可能正在为
bigdecime
生成一个无效的数字。试用

DecimalFormat df = new DecimalFormat("####0.00", new DecimalFormatSymbols(Locale.US));

当然,您可以简单地使用
df.format(amount)
来显示输出值
df.format(amount)
返回字符串。为什么要将其传递回
BigDecimal
。只需从
df.format(amount)
打印返回值,也可以将格式更改为
“####0.00”
,否则它将打印
.00
,而不是
0.00
,实际上您问题中的上述代码片段是有效的。所以如果我在做一个
DecimalFormat df=new DecimalFormat(“####.00”);BigDecimal金额=新的BigDecimal(“0”);System.out.println(新的BigDecimal(df.format(amount))它不打印0.00。所以,如果您可以共享错误stackTrace,它将有所帮助。正如@Goion所提到的,只需在返回字符串时打印
df.format(amount)
。但是如果你要打印
df.format(amount)
,那么将格式从
#####.00
(它将打印.00)更改为
####0.00
(它将打印0.00)我全心全意地爱你。谢谢