科学记数法到十进制

Posted

技术标签:

【中文标题】科学记数法到十进制【英文标题】: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?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于科学记数法到十进制的主要内容,如果未能解决你的问题,请参考以下文章

将不同的数字转换为小数 C#(科学记数法到十进制)

科学计数法到普通十进制输出的转换

如何将科学记数法转换为十进制记数法?

使用 getItemValueDouble 返回的科学记数法

将科学记数法转换为十进制记数法

将科学记数法转换为十进制 - python