0

我有一个双精度数,我正在尝试将其转换为小数。当我使用十进制格式来实现这一点时,我得到以下信息:

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?

4

1 回答 1

9

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

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

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

于 2011-07-29T20:27:52.483 回答