假设我有:
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
那应该是什么解决方案!
答案 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")