java - 科学记数法转十进制

标签 java decimal scientific-notation decimalformat

我有一个 double ,我正在尝试将其转换为小数。当我使用十进制格式来实现此目的时,我得到以下结果:

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?

最佳答案

正在解析来自DecimalFormat的结果 - 您应该将其作为字符串返回:

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

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

关于java - 科学记数法转十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6878623/

相关文章:

java - 如何使用过滤器?

java - 关于通过自定义编译过程在Groovy中添加导入包

java - 如果在 Java 中如果在 C++ 中

vb.net - VB.NET 中数字的小数位

c# - Wind Chill C# 最终编号需要更多位数

r - write_csv read_csv 在第 1000 行后使用科学记数法

java - OnClick 不适用于 LinearLayout

javascript - 除非是整数,否则显示两位小数

ruby - 以科学计数法对数字数组进行排序

ios - UIStepper.value 变成科学计数法