我有一个双倍,我试图将其转换为小数。当我使用decimalformat来实现这一点时,我得到以下结果:
public void roundNumber(){
double d = 2.081641999208976E-4;
JOptionPane.showMessageDialog(null,roundFiveDecimals(d));
}
public double roundFiveDecimals(double d) {
DecimalFormat df = new DecimalFormat("#.#####");
return Double.valueOf(df.format(d));
}
我希望输出为.00021;但是,我得到2.1E-4。任何人都可以帮忙解释如何获得.00021而不是2.1E-4?
答案 0 :(得分:9)
您正在解析 DecimalFormat
的结果 - 您应该将其作为String
返回
public String roundFiveDecimals(double d) {
DecimalFormat df = new DecimalFormat("#.#####");
return df.format(d);
}
double
值本身没有格式化概念 - 它只是一个数字。 DecimalFormat
的工作是将值格式化为文本,但是如果您想要将文本转换回转换为数字,那么您就失去了这项工作。