Java:如何在不带领0的情况下格式化双重?(.2而不是0.2)

  • 本文关键字:格式化 Java 情况下 java
  • 更新时间 :
  • 英文 :


我当前正在使用 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

最新更新