尝试将字符串转换为双精度时出现以下错误。
For input string: "1,514,230.15"
Exception:
java.lang.NumberFormatException: For input string: "1,514,230.15"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
这是我正在使用的代码行
testString = "1,514,230.15"
double d= Double.parseDouble(TestString);
有人可以帮助我了解我在这里做错了什么吗?
解决方案 1:
String testString = "1,514,230.15".replace(",", "");
double d = Double.parseDouble(testString);
System.out.println(d);
或解决方案 2:
String input = "1,514,230.15";
NumberFormat numberFormat = NumberFormat.getInstance(Locale.US);
double result = numberFormat.parse(input).doubleValue();
System.out.println(result);
或解决方案 3:
String testString = "1514230.15";
double d= Double.parseDouble(testString);
System.out.println(d);
输出:
1514230.15
解释:
- 在
solution 1
使用replace
方法来替换所有,
即replace(",", "");
- 在
solution 2
使用了数字格式。此类提供用于格式化和分析数字的接口。 solution 3
从testString
中删除了所有,
,即String testString = "1514230.15";
您应该使用专门用于此类转换的 NumberFormat#prase。您的输入字符串符合Locale.US
的数字格式。
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;
public class Main {
public static void main(String[] args) throws ParseException {
String input = "1,514,230.15";
NumberFormat numberFormat = NumberFormat.getInstance(Locale.US);
double n = numberFormat.parse(input).doubleValue();
System.out.println(n);
}
}
输出:
1514230.15