作业帮 > 综合 > 作业

用c语言计算圆周率出错,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 06:46:11
用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的值在开始还是正确的,到后来越算越离谱,先减小,又增大,再减小,再增大,如此循环下去,太诡异了.
谁能告诉我这是为什么?
程序逻辑没有问题,主要问题是数据类型不合适.
可以自己计算,当fab(s)=0.00001时,i肯定是大于32767的,而int类型最大所能表示的也就是32767了.因此,当程序运行到i=32767时,下一步就是i=-32768了,然后i=-32767……
可以将i定义为long int i=1,这样子就可以了.最后结果如下:
i=50001
pi=3.141616