我正在使用Double.parseDouble()
将用户输入从字符串转换为科学记数法。但我注意到这只适用于以下范围:
value with exponent number >=7 (ie: 1e7) for positive exponent or
value with exponent number <= -4 (ie: 1e-4) for negative exponent.
以下代码转换 1e7正确为1e7但是 1e4错误地为10000
public Double convert(String value){
DecimalFormat df = new DecimalFormat("0.##E0");
String formattedVal = df.format(value);
return Double.parseDouble(formattedVal);
}
答案 0 :(得分:1)
double没有内在格式,只是位。你看到的是在你的Double上调用toString()的结果。默认情况下,Double.toString()仅在某些情况下使用科学记数法。如果要将特定符号转换为String以进行显示,请再次使用DecimalFormat。
public Double convert(String value){
DecimalFormat df = new DecimalFormat("0.##E0");
String formattedVal = df.format(value);
return Double.parseDouble(formattedVal);
}
DecimalFormat df = new DecimalFormat("0.##E0");
Double d = convert("1e4");
String dAsString = df.format(d);
System.out.println(dAsString);