DecimalFormat不格式化值等于0的double

时间:2018-01-04 09:29:26

标签: java formatting double number-formatting

我需要格式化一个双精度到两位小数,为此我使用DecimalFormat,如下所示:

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

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

格式化方面是否有任何遗漏? 请建议。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

是。您可以使用0格式元素而不是#,其中涉及0-padding,例如

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