我有一条看起来像的线
if(numb2 < 10000000000000 & numb2 > 100000000000){
所以在Eclipse中它表示10000000000000和100000000000都不在整数字面范围内.特别
int类型的文字10000000000000超出范围
和
int类型的文字1000000000000超出范围
我改变了线,看起来像
if(numb2 < 1000000000*10000 & numb2 > 100000000*1000){
但如果你在那个范围内键入一个数字,它就说了
Exception in thread "main" java.lang.NumberFormatException: For input string: "5555555555555"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at twothousandthirteen.LuckyNumber.main(LuckyNumber.java:12)
谢谢
KMehta
最佳答案
这些数字大于最大的int值,即231-1或2147483647,并且可以作为常量
Integer.MAX_VALUE
使用.
您能够将其编码为1000000000 * 10000的原因是因为尽管每个被乘数都在最大int值的范围内,但结果不是,并且java在overflowing之前处理结果,因此它落在有效范围内.
要解决这个问题,如果数字(java中的默认数字类型是int),你的变量应该使用Long.parseLong()
以满足较大的值,那么也可以通过在末尾附加L来使变量变长(64位)和常量变长.你的意见.
请注意,与int类似,long的范围也是有限的:到263-1或9223372036854775807,可用作常量Long.MAX_VALUE
.
对于任意大的数字,请使用BigInteger类.