用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的值在开始还是正确的,到后来越算越离谱,先减小,又增大,再减小,再增大,如此循环下去,太诡异了.
谁能告诉我这是为什么?
#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
可以自己计算,当fab(s)=0.00001时,i肯定是大于32767的,而int类型最大所能表示的也就是32767了.因此,当程序运行到i=32767时,下一步就是i=-32768了,然后i=-32767……
可以将i定义为long int i=1,这样子就可以了.最后结果如下:
i=50001
pi=3.141616
用c语言计算圆周率出错,
C语言计算圆周率出错,求大神帮忙!
C语言 计算圆周率的近似值 填空
用C语言编出计算圆面积 哪里出错了
怎样用C语言计算圆周率后2000位
C语言计算PAI的值用圆周率PAI=4*(1-1/3+1/5-1/7+...)公式计算圆周率PAI.加到某项绝对值小于1
怎样用C语言做出圆周率?
求一个用c语言算圆周率的程序
c语言,请问这个程序那里出错了 需要计算s=1!+2!+3!+...+10!
c语言计算sin(x)值的程序.泪奔跪求各位高手如下程序哪里出错了!
C语言中圆周率π怎么打
用c语言 编程公式 求 4(1-1/3+1/5-1/7+...)计算圆周率,精度要求为10的负五次方