C语言基础:求π的近似值。 pi=4*(1-1/3+1/5-....) 我哪里错了?

C语言基础:求π的近似值。
pi=4*(1-1/3+1/5-....)
我哪里错了?#include <stdio.h>
#include <math.h>
int main()
{
float pi=4.0,n=-3.0,t=1.0;
while (abs(1/n)>=10e-6){
pi=pi+4*(1.0/n);
t=t*(-1.0);
n=(abs(n)+2.0)*t;
}
printf("%.6f\n",pi);
return 0;
}

#include <math.h>
int main()
{
    float pi=4.0,n=-3.0,t=1.0;
    while (fabs(1/n)>=1e-6){//用fabs  不要用abs。 abs是整型的。 精度应该是1e-6
        pi=pi+4*(1.0/n);
        t=t*(-1.0);
        n=(abs(n)+2.0)*t;//一样用fabs
    }
    printf("%.6f\n",pi);
    return 0;
}

其实 把n作为int更好。

比如

#include <math.h>
int main()
{
    float pi=4.0;
    int n=3,t=-1;
    while (1.0/n>=10e-6){
        pi=pi+4*(1.0/n)*t;
        t=t*-1;
        n=n+2;
    }
    printf("%.6f\n",pi);
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-10-17
#include<stdio.h>
#include<math.h>
int main()
{
int sign=1;
double pi = 0.0, n = 1.0, term = 1.0;//term表示当前项
while(fabs(term)>=1e-6)
{
pi += term;
n += 2;
sign = -sign;
term = sign / n;
}
pi *= 4;
printf("pi=%.8f\n",pi);
return 0;
}

你的思路感觉比较模糊,方法不可取,你可以对照一下我的程序,仅供参考。

相似回答