【问题标题】:DecimalFormat not formatting a double having value equal to 0DecimalFormat 未格式化值为 0 的双精度数
【发布时间】:2018-06-14 00:06:46
【问题描述】:

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

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

它工作得非常好,除非双精度为 0(或 0.0、00.00 或 0.00)值。在这种情况下,它只是将双精度格式化为平面 0。

我在格式化中有什么遗漏的吗? 请建议。

【问题讨论】:

    标签: java formatting double number-formatting


    【解决方案1】:

    是的。您可以使用 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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-12
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多