用c语言计算圆周率出错,#includemain(){float pi=0,t=1;int i=1;do{t=1/(float)(2*i-1);if(i%2==0) t=-t; /*printf("%d ",t);*/pi+=t;i++;}while(fabs(t)>0.00001);printf("pi=%f\n",4*pi);getch();}以上是我用公式 pi/4=1-1/3+1/5-1/7+.计算圆周

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 05:01:39
用c语言计算圆周率出错,#includemain(){float pi=0,t=1;int i=1;do{t=1/(float)(2*i-1);if(i%2==0) t=-t; /*printf(0.00001);printf("pi=%f\n",4*pi);getch();}以上是我用公式 pi/4=1-1/3+1/5-1/7+.计算圆周" />

用c语言计算圆周率出错,#includemain(){float pi=0,t=1;int i=1;do{t=1/(float)(2*i-1);if(i%2==0) t=-t; /*printf("%d ",t);*/pi+=t;i++;}while(fabs(t)>0.00001);printf("pi=%f\n",4*pi);getch();}以上是我用公式 pi/4=1-1/3+1/5-1/7+.计算圆周
用c语言计算圆周率出错,
#include
main()
{
float pi=0,t=1;
int i=1;
do
{
t=1/(float)(2*i-1);
if(i%2==0) t=-t; /*printf("%d ",t);*/
pi+=t;
i++;
}while(fabs(t)>0.00001);
printf("pi=%f\n",4*pi);
getch();
}
以上是我用公式 pi/4=1-1/3+1/5-1/7+.计算圆周率的程序,但在tc2.0上运行时陷入死循环.
我发现t的值在开始还是正确的,到后来越算越离谱,先减小,又增大,再减小,再增大,如此循环下去,太诡异了.
谁能告诉我这是为什么?

用c语言计算圆周率出错,#includemain(){float pi=0,t=1;int i=1;do{t=1/(float)(2*i-1);if(i%2==0) t=-t; /*printf("%d ",t);*/pi+=t;i++;}while(fabs(t)>0.00001);printf("pi=%f\n",4*pi);getch();}以上是我用公式 pi/4=1-1/3+1/5-1/7+.计算圆周
程序逻辑没有问题,主要问题是数据类型不合适.
可以自己计算,当fab(s)=0.00001时,i肯定是大于32767的,而int类型最大所能表示的也就是32767了.因此,当程序运行到i=32767时,下一步就是i=-32768了,然后i=-32767……
可以将i定义为long int i=1,这样子就可以了.最后结果如下:
i=50001
pi=3.141616