1

したがって、次のプログラムで数学的に記述されている合計に十分な項を取り、根の式を計算すると、pi の値の近似値を計算することになっているプログラムを次に示します。あなたが持っているより多くの項をpiの値に。

#include <stdio.h>
#include <math.h>

main()
{
    int j, terms;
    double sum, precision, pi;
    printf("How many terms: "); scanf("%d", &terms);
    for(j=1;j<=terms;j++)
        sum+=1/(j*j);
    pi = sqrt(6*sum);
    printf("Pi: %lf.\n", pi);
}

しかし、ここで何かがうまくいかず、何が原因なのかよくわかりません。

sum+=1/(j*j);

最初はコンピューターが小数を数えていないのではないかと思ったので、間違いはその行にあるのではないかと思いました.私はそれを修正しますか?

4

1 に答える 1

7

これは整数除算を実行します:

1/(j*j);

これを試して:

sum+=1.0/(j*j);

j*jオーバーフローする可能性がある場合は、これを実行します

sum+=1.0/((double)j*j);
于 2012-03-23T08:35:00.077 に答える