因为某些原因,for循环不会添加术语

时间:2013-10-08 01:26:43

标签: java loops for-loop pi

所以,我通过尝试使用具有用户定义精度的系列创建数学常数π,将我对for循环的知识用于测试:

public double pi(int accuracy) {
    for (int i = 1; i <= accuracy; i++) {
        rawPi += 1 / (i * i);
    }
    return Math.sqrt(rawPi * 6);
}

现在,你会认为当int accuracy射击时,这会越来越接近π,但事实并非如此。它只保留在6的平方根,这意味着private double rawPi变为1并且永远不会更高,这意味着我的系列中没有添加任何术语(表示为for循环),我完全不知道是什么问题可能是。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

尝试改变这一点:

    rawPi += 1 / (i * i);

    rawPi += 1.0 / (i * i);

或由“Patricia Shanahan”评论,使用它来获得更好的准确性并避免i * i上的整数溢出:

1/((double)i*i)