我当前正在使用 String.format("%.1f", number)
格式化双倍以具有1个小数号。但是,它们以0.2
的形式出现。是否可以在没有0
的情况下格式化它,因此看起来像.2
?
当我搜索它时,我所能找到的只是有关如何添加更多领先0的解决方案...
您可以使用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
。