下面的代码是我尝试将我的三个双打转换为一个格式,其中它们总是有四个小数点的位置(因为我需要用四个小数点打印它们,以使其本来可以成为一个简单分配(,即使原始双重小数点之后的所有数字为0-如任何整数中。我认为我也许可以使用setMinimumFractionDigits((方法来防止DemalFormat消除尾随的零 - 但它没有工作:" 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));
请参阅此用法
double d = 12.3;
DecimalFormat meanFormatted = new DecimalFormat("#.0000");
System.out.println (meanFormatted.format (d));
找到了一个解决方案:
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 = %sn", transform);
System.out.printf("Variance = %sn", transform1);
System.out.printf("Standard deviation = %sn", transform2);