我正在尝试使用无穷级数计算PI。当我开始编程时,我期望得到一些错误的数字,但是我却得到了输出“ 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;
}
答案 0 :(得分:3)
您未定义代码的行为,因为在读取x
或从中减去x = 1 / y;
时,未初始化 pi 。那就是NaN的原因:某些编译器在某些方面很有帮助-将未初始化的浮点变量设置为NaN。
x
由于整数除法将1.0 / y
设置为0。您要y + 2;
吗?
y += 2
是禁止操作。您要y
吗?
请注意,您需要将序列乘以4以获得 pi ,并且该序列收敛得特别慢,两个小数位需要大约300个项。并且ways
的起始值是错误的。不应该是1吗?