Java Double Format即使在为零时也显示2个小数点

Ric*_*ard 1 java double decimal decimalformat

我想在屏幕上用2个小数点打印出双精度值。到目前为止,这条线已经完美运行:

System.out.println(new DecimalFormat("$#,###.##").format(value));
Run Code Online (Sandbox Code Playgroud)

对于像这样的输入:

double value = 82348238482834.23482348;
Run Code Online (Sandbox Code Playgroud)

它输出:

$82,348,238,482,834.23
Run Code Online (Sandbox Code Playgroud)

这正是我想要的。但是,如果我有输入,则0希望将其打印出来$0.00。使用上述格式行,它会打印出来$0。我尝试将上面的代码更改为:

double value = 0;
System.out.println(new DecimalFormat("$#,###.00").format(value));
Run Code Online (Sandbox Code Playgroud)

但是那印出来了$.00。我可以这样做:

if(value == 0) {
    System.out.println("$0.00");
}
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是非常难看。还有其他解决方法吗?

seb*_*ern 5

使用:

System.out.println(new DecimalFormat("$#,##0.00").format(value));
Run Code Online (Sandbox Code Playgroud)

已更改:

"$#,##0.00"
Run Code Online (Sandbox Code Playgroud)

如Jon所说,0表示一个数字,因此它包括零,#表示一个数字,但零表示不存在。

有关DecimalFormat的更多信息