我想在使用 DecimalFormat 时保留尾随零

Posted

技术标签:

【中文标题】我想在使用 DecimalFormat 时保留尾随零【英文标题】:I want to keep my trailing zeroes when using 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); 【参考方案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的复制品。如果这是您问题的答案,您应该要求他们将其发布为答案。尽管如此,另一个答案也完全解决了您的问题(并修复了代码中的不良用法) 不,我必须为我的解决方案导入另一个类...评论没有提到这一点。

以上是关于我想在使用 DecimalFormat 时保留尾随零的主要内容,如果未能解决你的问题,请参考以下文章

删除前导零和尾随零并将结果保留到小数点后两位

在 Access DAO SQL INSERT 中保留尾随空格

如何检查一个数字是不是有两位小数并在必要时保留尾随零?

DecimalFormat详解

使用DecimalFormat给String字符串加千位符,并保留2位小数

DecimalFormat保留小数