DecimalFormat 不格式化 double 值等于 0

DecimalFormat not formatting a double having value equal to 0

我需要将双精度格式设置为小数点后两位,为此我使用 DecimalFormat 如下:

    Double c = 12.01;
    DecimalFormat df2 = new DecimalFormat("##.##");
    System.out.println("c = "+df2.format(c));

并且它工作得非常好,直到并且除非双精度值具有 0(或 0.0、00.00 或 0.00)值。在这种情况下,它仅将 double 格式化为平面 0。

我在格式化时遗漏了什么吗? 请建议。

尝试使用 '##.00',因为 # 表示可选数字,而 0 表示必填数字

是的。您可以使用 0 格式化元素而不是 # ,后者涉及 0 填充,例如

Double c = 0.0d;
DecimalFormat df2 = new DecimalFormat("00.00");
System.out.println("c = "+df2.format(c));  

docs所述:

Symbol  Location    Localized?  Meaning 
0       Number      Yes         Digit
#       Number      Yes         Digit, zero shows as absent