0

そのため、ユーザー定義の精度を持つシリーズを使用して数学定数 π を作成しようとすることで、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 rawPi1 になり、それ以上になることはありません。これは、一連の用語が追加されていないことを意味し (for ループとして表されます)、何が問題なのかまったくわかりません。何か案は?

4

1 に答える 1

2

これを変更してみてください:

    rawPi += 1 / (i * i);

    rawPi += 1.0 / (i * i);

または、「Patricia Shanahan」のコメントに従って、これを使用して精度を高め、i*i での整数オーバーフローを回避します。

1/((double)i*i) 
于 2013-10-08T01:28:11.997 に答える