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

Reg*_*ser 8 java

在给出的例子中:

int a, b, c;
a = 2111000333;
b = 1000222333;
c = a + b;
System.out.println("c= " + c);
Run Code Online (Sandbox Code Playgroud)

会回来:c= -1183744630为什么?

如何解决?

Sch*_*els 11

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

长期有更大的范围.

long a, b, c;
a = 2111000333;
b = 1000222333;
c = a + b;
System.out.println("c= " + c);
Run Code Online (Sandbox Code Playgroud)

  • @reg:请记住,在Java中,整数类型*总是*有*并且你*不能*检测溢出,除非使用更大的类型.这是设计的,是的,在某些情况下实际上是不幸的. (3认同)

Dre*_*lls 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);
Run Code Online (Sandbox Code Playgroud)

这种方法仅受JVM内存的限制.