住宽窄巷子合适的酒店:请问关于实型数据的问题,本人被困惑很久---

来源:百度文库 编辑:高校问答 时间:2024/04/29 22:54:31
这是算pi的程序,
pi/4约等于1-1/3+1/5-1/7+............
方法1
#include <math.h>
main()
{int s;
float k,i,pi;
i=-1,s=-1,pi=0;
while(fabs(k)>=1e-6);
{s=-s;
i=i+2;
k=s/i;
pi=pi+k;
}
pi=4*pi;
printf("pi=%.2f",pi);
}
这样得不出结果--- 显示 Floating point error:Domain

方法2
#include <math.h>
main()
{
float k,i,pi,s; /*注意只是将s改为了实型*/
i=-1,s=-1,pi=0;
while(fabs(k)>=1e-6);
{s=-s;
i=i+2;
k=s/i;
pi=pi+k;
}
pi=4*pi;
printf("pi=%.2f",pi);
}
可以得出结果~ 但是却是 pi=4.00
不知道为什么不是 3.14

方法3
#include <math.h>
main()
{
int s;
float n,t,pi;
t=1,pi=0,n=1,s=1;
while(fabs(t)>=1e-6)
{pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=4*pi;
printf("pi=%.2f",pi);
}
得到正取 结果 pi=3.14

本人一直不明白到底为什么会这样,并不认为哪个程序有错误,希望高手知道下

方法一:while(fabs(k)>=1e-6); 多了分号,把分号取消.

方法二也是的.