我们只是为了好玩而尝试创建如下所示的for循环。我们假设我们得到的数字很高,但是我们得到0。为什么是0而不是大数字?
我们甚至尝试了很长时间,因为我们认为它可能比int大。
提前致谢。

private static void calculate() {
    int currentSolution = 1;
    for (int i = 1; i < 100; i++) {
        currentSolution *= i;
    }
    System.out.println(currentSolution);
}

最佳答案

当您的int达到-2147483648时,它会四舍五入为+2147483647

令人惊讶的巧合1是将乘以零的乘积引入到您的乘积中。

自己看看:写

if (currentSolution == 0){
    // What is the value of i?
}

您需要一个BigInteger才能评估100!。

1确实不是那么令人惊叹:只是100个!有232作为因数。

10-07 18:58