我有一个要组合的字符串列表。
x = "1";
Integer.parseInt(x); //does not throw an exception
out.add((43.244 * Integer.parseInt(x)) + ""); //throws an exception
正在 throw
Caused by: java.lang.NumberFormatException: For input string: "43.244"
我对Java的理解是Integer应该扩宽为Double,相乘,用+""转为字符串
我这里有什么误解吗?
编辑:
截断的堆栈跟踪
.... FXML trace ....
Caused by: java.lang.NumberFormatException: For input string: "43.244"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
... etc ...
最佳答案
安Integer
永远不会扩大到 Double
。您可能会认为int
可以扩大到 double
,这是事实。但是Integer.parseInt
专门寻找适合 int
的文本模式。仅当 Integer.parseInt
返回 int
会*
运算符将其扩大到 double
用于乘法。
使用Double.parseDouble
相反,生成 double
直接,因为 "43.244"
不是 int
的表示,但是 double
.
关于java - 将字符串添加到列表中会在 double * parsed int 上引发 Integer NFE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31013494/