【问题标题】:Scientific notation to decimal科学记数法到十进制
【发布时间】:2011-07-29 20:25:17
【问题描述】:

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

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?

【问题讨论】:

    标签: java decimal scientific-notation decimalformat


    【解决方案1】:

    你正在解析来自DecimalFormat的结果 - 你应该返回它作为String

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

    double 值本身没有格式的概念 - 它只是一个数字。 DecimalFormat 的工作是根据需要将值格式化为文本...如果您随后将该文本 back 转换为数字,那么您就失去了这项工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 2018-11-27
      • 2018-07-30
      相关资源
      最近更新 更多