为 int 数据类型分配大值
assign large value to int data type
当我尝试编译这个程序时,它给出了一个错误 integer number too large: 11111111111
。如何纠正这个问题?
class PrimeFactor {
public static void main(String[] args) {
int primeLimit = 11111111111;
int sum = 1;
for(int i = 1; i < primeLimit + 1; i++) {
if((primeLimit%i) == 0) {
sum *= i;
System.out.println(i);
}
if(sum == primeLimit) {
break;
}
}
}
}
一个带符号的整数可以容纳 2^31 - 1 的值,即 2147483647。使用 long
或其他一些替代方法也可以。
如果你的数字不是太大,你可以使用long
原始类型。 Long 使用的位数是 int
使用的两倍,并且可以表示最大 Long.MAX_VALUE = 2^63-1
:
的整数
long primeLimit = 11111111111L;
当然你必须改变其他变量的类型,例如i
和 sum
。
如果要使用更大的数字,请使用 BigInteger
。
BigInteger primeLimit = new BigInteger("11111111111111111111111");
如果您想使用BigInteger
,普通的算术运算符将不再有效。您必须改用 BigInteger
的方法。
当我尝试编译这个程序时,它给出了一个错误 integer number too large: 11111111111
。如何纠正这个问题?
class PrimeFactor {
public static void main(String[] args) {
int primeLimit = 11111111111;
int sum = 1;
for(int i = 1; i < primeLimit + 1; i++) {
if((primeLimit%i) == 0) {
sum *= i;
System.out.println(i);
}
if(sum == primeLimit) {
break;
}
}
}
}
一个带符号的整数可以容纳 2^31 - 1 的值,即 2147483647。使用 long
或其他一些替代方法也可以。
如果你的数字不是太大,你可以使用long
原始类型。 Long 使用的位数是 int
使用的两倍,并且可以表示最大 Long.MAX_VALUE = 2^63-1
:
long primeLimit = 11111111111L;
当然你必须改变其他变量的类型,例如i
和 sum
。
如果要使用更大的数字,请使用 BigInteger
。
BigInteger primeLimit = new BigInteger("11111111111111111111111");
如果您想使用BigInteger
,普通的算术运算符将不再有效。您必须改用 BigInteger
的方法。