我目前正在使用String.format("%.1f", number)
格式化双精度,正好有1个十进制数。但是,它们显示为0.2
。是否可以在没有0
的情况下对其进行格式化,使其看起来像.2
?
当我搜索这个时,我能找到的就是如何添加更多前导0的解决方案......
答案 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
。