科学记数法到十进制
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 转换为数字,那么您就失去了这项工作。
【讨论】:
以上是关于科学记数法到十进制的主要内容,如果未能解决你的问题,请参考以下文章