在给出的例子中:
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)
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内存的限制.
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |