我正在尝试用无穷级数计算PI。当我开始我的程序时,我得到了一些错误的nummbers,但我得到了输出"nan"。
有谁知道为什么?
代码如下:
#include <iostream>
using namespace std;
int main()
{
long double pi;
float x;
int y = 3;
bool loop = true;
while(true)
{
x=1/y;
y+2;
if(loop == true)
{
pi -= x;
loop = false;
}
else if(loop == false)
{
pi += x;
loop = true;
}
cout<<pi<<" ";
}
return 0;
}
代码的行为未定义,因为当您在添加或减去x
pi 时读取其值时不会初始化pi。这解释了 NaN:一些编译器在某些方面有帮助地将未初始化的浮点变量设置为 NaN。
由于整数除法,x = 1 / y;
将x
设置为 0。你想要1.0 / y
吗?
y + 2;
是无操作的。你想要y += 2
吗?
请注意,您需要将序列乘以 4 才能得到pi,并且该序列收敛得特别慢,小数点后两位需要大约 300 个项。而且你的起始值y
是错误的。不应该是1吗?