求PI的值的问题
/*根据以下公式返回满足精度M要求的PI的值。PI=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+......*/
#include <stdio.h>
double pi (double m)
{
double s=0.0,t=1.0;int n;
for(n=1;t>m;n++)
{s+=t;t=n*t/(2*n+1);}
return(2.0*s);
}
main()
{double a,m;
printf("please give the m\n");
scanf("%f",&m);
printf("%f\n",a=pi(m));
getch();
}
求给定精度的PI的值,可我不管输入0.1还是0.000000000001,结果都是3.141593,程序那里的问题,还请指教.
----------------解决方案--------------------------------------------------------
因为你是用的double,所以显示的位数有限制地
----------------解决方案--------------------------------------------------------
如果这样的话,我输入0.1,应该输出3.100000才对.
----------------解决方案--------------------------------------------------------
行了,写成这样就OK了.
#include <stdio.h>
double pi (double m)
{
double s=0.0,t=1.0;int n;
for(n=1;t>m;n++)
{s+=t;t=n*t/(2*n+1);}
return(2.0*s);
}
main()
{double m;
printf("please give the m\n");
scanf("%lf",&m);
printf("%lf\n",pi(m));
getch();
}
----------------解决方案--------------------------------------------------------