我想处理两个数字相乘导致溢出的特殊情况。代码如下所示:
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;
}
你建议我如何最好地编写这个代码?
Update: a
and b
are always non-negative in my scenario.