C++由近似公式π/2=(2/1)*(2/3)*(4/3)*(4/5)……求π精确到10^-6

为什么下面这段代码输出总是0#include<iostream>#include<cmath>usingnamespacestd;intmain(){doublepi=1... 为什么下面这段代码输出总是0
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double pi=1,c;
int i=1;
while(1){

if(i%2==0)c=(double)i/(double)(i+1);
else c=(double)(i+1)/(double)i;
pi=pi*c;
i++;
if(c<1e-6)break;
}
cout << 2*pi<< endl;
return 0;
}
展开
 我来答
xuzhouliuying
高粉答主

2018-04-02 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:5.4万
采纳率:86%
帮助的人:2.5亿
展开全部

算法错误。随着i的增大,c的值接近1,不可能出现c<1e-6的情况。

题目描述不清,给出参考程序如下:

#include <iostream>
using namespace std;
int main()
{
int i;double pi=1;
for(i=1;1.0/i>=1e-6;i++)
pi*=(i%2?(i+1.0)/i:i/(i+1.0));
cout<<pi*2;
return 0;
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式