#include
#include
int fun(double eps)
{
float pi=0.0,t=1.0,s=1.0,n=1.0;
while((fabs(s))>=eps)
{
pi+=s;
t=n/(2*n+1);
s*=t;
n++;
printf("t=%f\n",t);
printf("s=%f\n",s);
printf("pi=%f\n",pi);
}
pi*=2.0;
printf("pi=====%f\b",pi);
return (float)pi;
}
main()
{
float n,result;
printf("please input precision;\n");
scanf("%f",&n);
result=fun(n);
printf("the pi is %f\n",result);
}
以下是运行结果:
please input precision;
0.01
t=0.333333
s=0.333333
pi=1.000000
t=0.400000
s=0.133333
pi=1.333333
t=0.428571
s=0.057143
pi=1.466667
t=0.444444
s=0.025397
pi=1.523810
t=0.454545
s=0.011544
pi=1.549206
t=0.461538
s=0.005328
pi=1.560750
pi=====3.121501
the pi is 3.000000
π求到最后都是对的,为什么函数返回就自动清除小数点后的了