程序输出 "nan"

Programm Output "nan"

我正在尝试用无限级数计算圆周率。当我开始我的程序时,我期望得到一些错误的数字,但我得到的是输出 "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 或从中减去 x 时,pi 未被初始化。这就是 NaN 的原因:一些编译器在某些方面很有帮助——将未初始化的浮点变量设置为 NaN。

由于整数除法,

x = 1 / y;x 设置为 0。你想要 1.0 / y 吗?

y + 2; 是空操作。你想要 y += 2 吗?

注意需要将级数乘以4得到pi,而且这个级数收敛特别慢,需要300项才能保留两位小数。而你的 y 的起始值是错误的。不应该是1吗?