为什么我会得到java.lang.NumberFormatException:对于输入字符串:" 0.10"
Long.valueOf("0.10")
答案 0 :(得分:5)
该String不表示long值,而是浮点值,更好地表示为double,float或BigDecimal。
答案 1 :(得分:2)
0.10
是浮点数而不是long
。使用Float
或Double
类
double value = Double.valueOf("0.10");
答案 2 :(得分:1)
原因是Long.valueOf(String)
仅执行解析,但拒绝执行任何强制/舍入/缩小转换。这在Javadoc:
为了避免对您未来的问题产生误解,请务必提供期望,以便读者理解您的问题“为什么”的角度。返回一个持有指定String值的Long对象。该参数被解释为表示带符号的十进制长度,就像该参数被赋予parseLong(java.lang.String)方法一样。结果是一个Long对象,表示字符串指定的整数值。
答案 3 :(得分:0)
java中的浮点数默认为double
,如果没有强制转换,则无法从double转换为long。你可以尝试
Double.parseDouble("0.10");
如果你想要多久,你可以做到
double doubleValue = Double.parseDouble("0.10");
long longVal = (long)doubleValue ;
System.out.println(longVal);