使用Liebniz我的pi计算不起作用,我不明白为什么

时间:2018-01-19 18:28:10

标签: java

为什么此代码会生成结果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 个答案:

答案 0 :(得分:1)

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

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