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
温馨提示:答案为网友推荐,仅供参考