从不使总和为负的数据类型

时间:2017-05-09 19:21:35

标签: java byte

我根据现有大小和传入大小动态计算字节大小。但是当值增长超出结果时变为负数

int i = 65568768;
int j = 2106140544;
System.out.println(i+j);

有没有什么方法可以保持这个总和而不会丢失它的符号。我用.length计算大小数组

3 个答案:

答案 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

Javadoc here