【问题标题】:I want to keep my trailing zeroes when using DecimalFormat我想在使用 DecimalFormat 时保留尾随零
【发布时间】:2017-04-27 06:12:19
【问题描述】:

下面的代码是我尝试将我的三个双精度数转换为它们总是有四位小数的格式(因为我需要用四位小数打印它们,这意味着一个简单的分配),即使所有原始双精度中小数点后的数字为 0 - 与任何整数一样。我想我也许可以使用 setMinimumFractionDigits() 方法来防止 DecimalFormat 消除尾随零 - 但它不起作用:仍然打印出“3.0”而不是我想要的:“3.0000”。我意识到在我的这个 setMinimumFractionDigits() 方法的实例下面实际上什么也没做。

(小数位不全为零的数字不是问题;代码可以按我的意愿工作。)

........有简单的解决方法吗?可能有;我不太了解我在这里使用的方法。

           double  mean = mean(numbers);
            double variance = variance(numbers, mean);
            double sd = sd(variance); 
            DecimalFormat meanFormatted = new DecimalFormat("#.####");
            meanFormatted.setMinimumFractionDigits(4);
            mean = Double.valueOf(meanFormatted.format(mean));
            DecimalFormat varianceFormatted = new DecimalFormat("#.####");
            varianceFormatted.setMinimumFractionDigits(4);
            variance = Double.valueOf(varianceFormatted.format(variance));
            DecimalFormat sdFormatted = new DecimalFormat("#.####");
            sdFormatted.setMinimumFractionDigits(4);
            sd = Double.valueOf(sdFormatted.format(sd));

【问题讨论】:

  • 用零替换散列。
  • 这行不通,乔 C
  • DecimalFormat meanFormatted = new DecimalFormat("#.0000");
  • 这也行不通,可怕的袋熊
  • System.out.printf(".%4f .%4f .%4f",mean,variance,sd);

标签: java number-formatting decimalformat


【解决方案1】:

查看此用法

   double d = 12.3;
   DecimalFormat meanFormatted = new DecimalFormat("#.0000");
   System.out.println (meanFormatted.format (d));

【讨论】:

    【解决方案2】:

    找到解决办法:

          double mean = mean(numbers);
            double variance = variance(numbers, mean);
            double sd = sd(variance); 
            Formatter transform = new Formatter();
            Formatter transform1 = new Formatter();
            Formatter transform2 = new Formatter();
            transform.format("%.4f", mean);
            transform1.format("%.4f", variance);
            transform2.format("%.4f", sd);
            System.out.printf("\nMean = %s\n", transform);
            System.out.printf("Variance = %s\n", transform1);
            System.out.printf("Standard deviation = %s\n", transform2);
    

    【讨论】:

    • -1,这个解决方案已经在 cmets 中(除了其他发布的解决方案实际上有效)。在发布您自己问题的答案之前,您应该真正考虑其他答案和 cmets。
    • 首先,你的回答几乎是This comment的复制品。如果这是您问题的答案,您应该要求他们将其发布为答案。尽管如此,另一个答案也完全解决了您的问题(并修复了代码中的不良用法)
    • 不,我必须为我的解决方案导入另一个类...评论没有提到这一点。
    猜你喜欢
    • 2016-08-22
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多