public class LongTest {
/**
* @param args
*/
public static void main(String[] args) {
String s = "116052312205661322001" ;
System.out.println(Long.parseLong(s));
}
}
结果:
Exception in thread "main" java.lang.NumberFormatException: For input string: "116052312205661322001"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at test.LongTest.main(LongTest.java:11)
------解决方案--------------------
Long.MAX_VALUE = 9223372036854775807
9223372036854775807
116052312205661322001
明显长了一块,是不是这个原因?
------解决方案--------------------
楼上正解,超出long的取值范围了
换BigDecimal就可以了
String s = "116052312205661322001" ;
System.out.println(new BigDecimal(s));
------解决方案--------------------
超过long 的最大取值了
------解决方案--------------------
正解
------解决方案--------------------
明显超过范围了。。。
试试BigInteger吧,BigInteger其实是字符串,我记得貌似BigInteger加减乘除有点麻烦。
------解决方案--------------------
你看看Long.MAX_VALUE
Long的最大值9223372036854775807
116052312205661322001这个很明显的超出了长度的