Java处理具有E的Double值

时间:2015-03-07 20:06:49

标签: java string math rounding number-formatting

假设我有:

    double Nc= 7.6695805E-4;
    NumberFormat formatter = new DecimalFormat("0.00000000000");
    String string = formatter.format(Nc);
    System.out.println(string);
输出将是:

    0.00076695805

但它是字符串类型变量的地方! 我要做的是将它转换为double或float或long,以便它应该保持与0.00076695805相同,以便我可以将它用于我的计算! 我试过的是:

    double Nc= 7.6695805E-4;
    NumberFormat formatter = new DecimalFormat("0.00000000000");
    String string = formatter.format(Nc);
    System.out.println(Double.parseDouble(string));

输出变为:

    7.6695805E-4 //which is same as i gave

那应该是什么解决方案!

2 个答案:

答案 0 :(得分:2)

你可能会将double原语与其String表示混淆 - 它们是两个完全不同的东西,一个不影响另一个。解决方案是在需要显示双精度时控制双精度的String表示。

解决方案是在需要使用double时使用double,但要打印格式化的String,而不是从String获取的double。所以不是:

double Nc= 7.6695805E-4;
NumberFormat formatter = new DecimalFormat("0.00000000000");
String string = formatter.format(Nc);
System.out.println(Double.parseDouble(string));

请注意,double没有使用它创建的String的内存,也不应该是double!= String。

相反,请执行:

double nc= 7.6695805E-4; // variable names begin with lower-case
NumberFormat formatter = new DecimalFormat("0.00000000000");
String string = formatter.format(nc);
System.out.println(string);

double nc= 7.6695805E-4; // variable names begin with lower-case
NumberFormat formatter = new DecimalFormat("0.00000000000");
System.out.println(formatter.format(nc));

答案 1 :(得分:1)

使用BigDecimal。 1 java doc

BigDecimal bd = new BigDecimal("String")