C语言求圆周率,浮点错误,求解释纠错!

C语言求圆周率,浮点错误,求解释纠错!float fun(float eps)
{
double S;
int i,n;
i=1;
S=0.000000;

while((float)(1/n)<=eps)
{S=S+(1/n)*pow(-1,i+1);
n=n+2;
i=i+1;
}
S=4*S;
return S;
}

1/n两个int型数据相除,结果等于int型,而且你的变量n没有初始化,值是不确定的追问

怎么改

追答

n=1,1.0/n

追问

现在不是浮点错误了,但答案错误

求解决

float fun(float eps)
{
double S;
int i,n;
i=1;
S=0.0;
n=1.0;

while(1.0/n<=eps)
{S=S+(1/n)*pow(-1,i+1);
n=n+2;
i=i+1;
}
S=4.0*S;
return S;
}

追答

S=S+(1/n)*pow(-1,i+1);//这里啊,1/n改成1.0/n,而且while条件是>=

追问

还是不对

追答

S=S+(1/n)*pow(-1,i+1);//这里啊,1/n改成1.0/n,而且while条件是>=,while(1.0/n>=eps),大于时条件成立,执行循环,你=eps)
{S=S+(1.0/n)*i;
n=n+2;
i=-i;
}

追问

还是对了一半

用运行的东西输出来是3.141393

不是97

( ˘•ω•˘ )

追答

没有问题,估计是题目给的运行结果不准确,就是93

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

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