小编典典

如何检查Java中的两个数字是否会引起溢出?

java

我想处理将两个数字相乘会导致溢出的特殊情况。代码看起来像这样:

int a = 20;
long b = 30;

// if a or b are big enough, this result will silently overflow
long c = a * b;

那是一个简化的版本。在实际程序中,a并且b在运行时从其他地方获取。我想要实现的是这样的:

long c;
if (a * b will overflow) {
    c = Long.MAX_VALUE;
} else {
    c = a * b;
}

你如何建议我最好编写此代码?

更新:ab总是非负在我的情况。


阅读 304

收藏
2020-03-24

共1个答案

小编典典

Java的8有Math.multiplyExact,Math.addExact等,为整数且长。这些会引发未经检查ArithmeticException的溢出。

2020-03-24