如何在整数乘法中检测整数溢出

oxalkeyp  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(307)
int base, power, result = 1;   
for (int i = 1; i <= power; i++) {
    result *= base;
}
System.out.println(base + " to the power of " + power + " result: " + result);

10乘以9的结果:1000000000,但是;
10的10次方结果:1410065408
在我的应用程序中,这在逻辑上是一个错误,但是如何在println之前检测到这个错误呢?例如,当发生此错误时,我想打印“结果数据类型为int 32位,不能超过2147483647”
我怎样才能抓住这些错误呢?

im9ewurl

im9ewurl1#

https://www.baeldung.com/java-overflow-underflow 我在这里找到了足够的答案。我已按如下方式更正了我的代码:

try {
    for (int i = 1; i <= power; i++) {
        result = Math.multiplyExact(base, result);
    }
} catch(ArithmeticException intSize) {
    base = result = 0;
    System.out.println("out of size int32: ")
}

相关问题