求圆周率中的精度问题,请大家帮我看看
计算圆周率1题目描述:
圆周率可以采用如下公式进行计算:
pi/2=1+1*1/3+1*1/3*2/5+1*1/3*2/5*3/7+..........
现要求根据输入的精度e,即最后一项的值不小于精度e时,输出相应的圆周率的值,结果保留六位小数。
输入
输入一个精度e。
输出:
输出对应的圆周率,结果保留六位小数。
样例输入;
0.00005
样例输出:
3.141480
(我代码的答案在精度上在最后几位和答案有出入,亲前辈们指点我一下
我的答案:3.141538
)
#include<stdio.h>
int main()
{
double pi=1;
double x,y;//分子分母
double sum=1;//每次加上的数
double n;//要使其小于最后一项
scanf("%lf",&n);
for(x=1,y=3;sum>n;x+=1,y+=2)
{
sum*=x/y;
pi+=sum;
}
printf("%.6lf\12",2*pi);
}