c语言计算圆周率,保留5位有效数字 4*(1-1/3+1/5-1/7+1/9....)

如题所述

关键在于什么时候结束循环,需要你自己根据精度需要取舍了。

#include <stdio.h>
int main()
{
float fPI,fTmp;
int i;
int sign; // 正负符号
i=1;
sign=1;
fPI=0.0;
do
{
fTmp=1.0/i;
fPI=fPI+4*sign*fTmp;
i=i+2;
sign = -sign;
}
while ( 4 * fTmp > 0.000001);
//当某一项小于0.000001就结束循环,这个数设置越小,精度就越高,这里精确到小数点后5位了。
//可以根据需要调整,加一个0,就增加1位精度.
printf("pi is :%.10f\n",fPI); //.10表示按照10位小数显示。可以根据需要调整。
printf("i is :%10ld\n",i); //这个是运算结束时i的值.
return 0;

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-04
#include <stdio.h>
#define N 1000000
int main(void)
{
float pi=0;
int deno;
int sign =1;
float term;
for(deno=1;deno<N;deno+=2)
{
term=1.0/deno;
term*=sign;
pi+=4*term;
sign=-sign;
}
printf("%.8f\n",pi);
return 0;
}
第2个回答  2011-05-04
#define N 10
include<stdio.h>
main()
{
int i,n;
float j,NUM;
j=1.0;
n=1;
NUM=1;
for(i=1;i<N;i++)
{
j*=-1;
n+=2;
NUM=NUM+j/n;
}
printf("yzl : %5f",4*NUM);
}
相似回答