【问题标题】:Leading zero in average平均领先于零
【发布时间】:2015-04-02 07:19:11
【问题描述】:

我正在创建一个始终采用 0.xxx 格式的 DOUBLE 变量。虽然我希望每次出现三位小数,但我不想看到前导零(例如:.275)。我找到了许多方法来删除 STRING 中的前导零,但不使用 DOUBLE 变量。

为了提供更多细节,我将一个 int 除以另一个 int 以获得双精度值。我可以使用 printf/ .3f 到达千分位,但 %0.3f 会导致错误。我一定是遗漏了一些简单的东西,但未能找到我的错误。

【问题讨论】:

  • 一些代码会很棒..
  • 当你显示它时,它总是一个字符串,有时是隐藏的。那么为什么不明确并删除前导零呢?

标签: java format double


【解决方案1】:

您可以使用DecimalFormat 类。类似的东西:

System.out.println(new DecimalFormat(".###").format(x));

【讨论】:

    【解决方案2】:

    看起来使用DecimalFormat 有效:

    import java.text.DecimalFormat;
    
    public class DecimalPrintNoZero
    {
      public static void main(String[] args)
      {
        double d = 0.275;
        DecimalFormat df = new DecimalFormat("#.000");
        System.out.println(df.format(d));
      }
    }
    

    参考资料:

    http://developer.android.com/reference/java/text/DecimalFormat.html

    Java - Format number to print decimal portion only

    【讨论】:

    • 发布我的问题后,我在 DecimalFormat 上找到了一个视频。我也很高兴在这里看到这个答案,因为它给了我一些背景信息。也就是说,它奏效了。我终于能够让变量正确显示,我现在可以继续我的项目了。感谢大家的回复!
    【解决方案3】:

    十进制格式可以使用

    public class DoublePrinter {
    public static void main(String[] args) {
        Double d = 0.325;
        DecimalFormat format = new DecimalFormat("0.000");
        Double price2 = Double.parseDouble(format.format(d));
        System.out.println(price2);
    
        String s = format.format(d);
        System.out.println("s is '" + s + "'");
    }
    
    }
    

    【讨论】:

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