科学记数法到十进制

Mic*_*ter 0 java scientific-notation decimal 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));
}
Run Code Online (Sandbox Code Playgroud)

我希望输出为.00021; 但是,我得到2.1E-4.任何人都可以帮助解释如何获得.00021而不是2.1E-4?

Jon*_*eet 9

您正在解析结果DecimalFormat- 您应该将其作为以下内容返回String:

public String roundFiveDecimals(double d) {
    DecimalFormat df = new DecimalFormat("#.#####");
    return df.format(d);
}
Run Code Online (Sandbox Code Playgroud)

double值本身没有格式化的概念-它只是一个数字.这是将DecimalFormat值格式化为文本然后你想要的工作...如果你然后将该文本转换数字,你就失去了这项工作.