Java:如何在没有前导0的情况下格式化double? (.2而不是0.2)

时间:2017-02-24 15:44:29

标签: java

我目前正在使用String.format("%.1f", number)格式化双精度,正好有1个十进制数。但是,它们显示为0.2。是否可以在没有0的情况下对其进行格式化,使其看起来像.2

当我搜索这个时,我能找到的就是如何添加更多前导0的解决方案......

1 个答案:

答案 0 :(得分:6)

您可以使用DecimalFormat

DecimalFormat formatter = new DecimalFormat("#.0"); // or the equivalent ".0"
System.out.println(formatter.format(0.564f));    // displays ".6"
System.out.println(formatter.format(12.546f));   // displays "12.5"
System.out.println(formatter.format(12f));       // displays "12.0"

在格式说明符中,使用#超过0表示如果值不存在,则不显示数字。

如果您不想显示尾随零,则需要使用#.#作为格式说明符。如果没有小数部分,则不会出现点:

DecimalFormat formatter = new DecimalFormat("#.#");
System.out.println(formatter.format(0.564f));    // displays ".6"
System.out.println(formatter.format(12.546f));   // displays "12.5"
System.out.println(formatter.format(12f));       // displays "12"

注意0.564是如何围捕的?如果这不符合您的口味,您可以使用DecimalFormat.setRoundingMode(RoundingMode mode)方法更改使用的舍入算法。如果您想简单地截断额外的数字,请使用RoundingMode.DOWN