我根据现有大小和传入大小动态计算字节大小。但是当值增长超出结果时变为负数
int i = 65568768;
int j = 2106140544;
System.out.println(i+j);
有没有什么方法可以保持这个总和而不会丢失它的符号。我用.length计算大小数组
答案 0 :(得分:2)
int的容量不够大。
通过指定L
后缀尝试使用long。
例如:
long v = 65568768L + 2106140544L;
System.out.println(v);
如果你写:
long v = 65568768 + 2106140544;
您将遇到与未指定类型时相同的问题,默认情况下,没有浮动部分的数字为int
。
65568768
+ 2106140544
= 2171709312
和2171709312
> 2147483647
(Integer.MAX_VALUE)
答案 1 :(得分:2)
您可以改为使用BigInteger:
BigInteger i = new BigInteger("65568768");
BigInteger j = new BigInteger("2106140544");
System.out.println((i.longValueExact() + j.longValueExact()));
<强>输出强>
2171709312
答案 2 :(得分:1)
BigInteger为我工作:
import java.math.BigInteger;
BigInteger i = new BigInteger("65568768");
BigInteger j = new BigInteger("2106140544");
System.out.println(i.add(j));
输出:
2171709312