如何通过在Java中添加整数来修复错误?

时间:2010-02-14 14:45:18

标签: java

在给定的例子中:

int a, b, c;
a = 2111000333;
b = 1000222333;
c = a + b;
System.out.println("c= " + c);

将返回:c= -1183744630,为什么?

如何解决这个问题?

5 个答案:

答案 0 :(得分:11)

你的整数溢出。整数的最大值为Integer.MAX_VALUE(2 ^ 31 - 1)。如果值变大,则变量将不再具有正确的值。

长期有更大的范围。

long a, b, c;
a = 2111000333;
b = 1000222333;
c = a + b;
System.out.println("c= " + c);

答案 1 :(得分:9)

Java long的MAX_VALUE是9223372036854775807,因此Scharrels的解决方案适用于您的示例。

如果需要,这是另一种可以更高的解决方案。

BigInteger a = new BigInteger(2111000333);
BigInteger b = new BigInteger(1000222333);
BigIntegerc = a.add(b);
System.out.println("c= " + c);

此方法仅受JVM内存限制。

答案 2 :(得分:4)

long a, b, c;
a = 2111000333;
b = 1000222333;
if (b > LONG.MAX_VALUE - a) {
   // a and b cannot be added.
}

答案 3 :(得分:2)

Java中int的最大值是2,147,483,647。 如果要计算超过此值的内容,则必须使用 long 类型。

答案 4 :(得分:1)

Java Datatypes

  

int数据类型是32位带符号的二进制补码整数。它的最小值为-2,147,483,648,最大值为2,147,483,647