我正在做另一个 C++ 练习。我必须从无限级数中计算 pi 的值:
pi=4 - 4/3 + 4/5 - 4/7 + 4/9 -4/11+ 。. .
该程序必须在本系列的前 1,000 个术语之后打印 pi 的近似值。这是我的代码:
#include <iostream>
using namespace std;
int main()
{
double pi=0.0;
int counter=1;
for (int i=1;;i+=2)//infinite loop, should "break" when pi=3.14159
{
double a=4.0;
double b=0.0;
b=a/static_cast<double>(i);
if(counter%2==0)
pi-=b;
else
pi+=b;
if(i%1000==0)//should print pi value after 1000 terms,but it doesn't
cout<<pi<<endl;
if(pi==3.14159)//this if statement doesn't work as well
break;
counter++;
}
return 0;
}
它编译时没有错误和警告,但执行后只出现空的控制台窗口。如果我删除行“if(i%1000==0)”,我可以看到它运行并打印每个 pi 值,但它不会停止,这意味着第二个 if 语句也不起作用。我不确定还能做什么。我假设这可能是一个简单的逻辑错误。