为什么这段代码会生成结果4.0?

public class Liebniz1 {

    public static void main(String[] args) {

        double piOverFour = 0;
        for (int i = 0; i < 500; i++) {
            if (i % 2 == 0)
                piOverFour = piOverFour + 1 / (1 + 2 * i);
            else
                piOverFour = piOverFour - 1 / (1 + 2 * i);
        } // for

        System.out.println("Liebniz calculated pi to: " + 4 * piOverFour);
    }
}

最佳答案

说明:1 / (1 + 2 * i)1i=0,这意味着piOverFour在第一次迭代后将是1
由于整数除法,1 / (1 + 2 * i)对于0将始终为i > 0
这意味着piOverFour将始终保留为1 => 4 * piOverFour将始终为4

解决方案:使用1.0 / (1 + 2 * i)绕开整数除法。

关于java - 我使用利勃尼兹(Liebniz)进行的pi计算不起作用,我也不明白为什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48347412/

10-12 03:44