【发布时间】:2010-12-12 02:02:41
【问题描述】:
我想处理两个数字相乘导致溢出的特殊情况。代码如下所示:
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;
}
你建议我如何最好地编写这个代码?
更新:a 和 b 在我的场景中总是非负数。
【问题讨论】:
-
可惜Java没有像is done in C#那样提供对CPU的overflow flag的间接访问。
标签: java math long-integer integer-overflow