【发布时间】: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