程序输出“ nan”

时间:2019-09-13 15:42:33

标签: c++ math pi

我正在尝试使用无穷级数计算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;
}

1 个答案:

答案 0 :(得分:3)

您未定义代码的行为,因为在读取x或从中减去x = 1 / y;时,未初始化 pi 。那就是NaN的原因:某些编译器在某些方面很有帮助-将未初始化的浮点变量设置为NaN。

x由于整数除法将1.0 / y设置为0。您要y + 2;吗?

y += 2是禁止操作。您要y吗?

请注意,您需要将序列乘以4以获得 pi ,并且该序列收敛得特别慢,两个小数位需要大约300个项。并且ways的起始值是错误的。不应该是1吗?