科学记数法到十进制

时间:2011-07-29 20:25:17

标签: java decimal scientific-notation decimalformat

我有一个双倍,我试图将其转换为小数。当我使用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?

1 个答案:

答案 0 :(得分:9)

您正在解析 DecimalFormat的结果 - 您应该将其作为String 返回

public String roundFiveDecimals(double d) {
    DecimalFormat df = new DecimalFormat("#.#####");
    return df.format(d);
}

double值本身没有格式化概念 - 它只是一个数字。 DecimalFormat的工作是将值格式化为文本,但是如果您想要将文本转换回转换为数字,那么您就失去了这项工作。