帮忙看一下我的程序哪里错了,用C语言写的,题目是求解π的近似值

求解π的近似值
π=(1-1/3+1/5-1/7+1/9......)
直到最后一项的绝对值小于1e-6;

我的代码:
#include<stdio.h>

int main()
{
inti;
double n,sum,p;
i=1,sum=0;
n=1;
while(n>=1e-6)
{
if(i%2==0)
sum=sum-n;
else if(i%2==1)
sum=sum+n;
i=i+1;
n=1/(2*i-1);
}
p=4*sum;
printf("π=%lf",p);
return 0;
}
循环到n值就出错了,不知道为什么,求解答,感激不尽!!!!

n=1.0/(2*i-1); //这里改一下就好了,因为整数相除结果还是整数,1/3结果是0,没有小数,想要小数部分,就需要有浮点数参与
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-10

n=1/(2*i-1);

C语言的右值里都是整型,所以右值结果精度会丢失,可以改成:

n = 1.0/(2*i-1);


本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网