计算 Pi 的值最多 'n' 位小数

Calculation of value of Pi up to 'n' decimal places

我试图制作一个 C++ 程序来使用 Leibniz formula.

计算 Pi 的值最多 'n' 个小数位

号码'n'将由用户输入。 我成功地创建了莱布尼茨公式,但我在后面的部分遇到了问题,即值精确到 'n' 个位置。

麻烦:- 随着越来越多的术语将继续添加到它,它的数字将不断变化,因此如何判断特定数字是否已停止变化,尽管添加了更多术语。

目前写的代码:-

#include<iostream>
using namespace std;
int main()
{
    float s=0;
    int w=-1;
    for(float i=1;;i=i+2)
    {
        w=w*(-1);
        s=s+w*(1/i);
        cout<<s<<endl;
    }
    return 0;
}

如果事情能保持简单就好了,因为我只是 C++ 的初学者。

非常感谢:)

因为你想计算 Pi 任意 nth 数字,你需要一个库来处理 big float数字;见

C++ library for big float numbers

真正的麻烦是莱布尼茨公式在上下文中没有用。实际达到的精度可以估计为公式

中的最后一项
  Pi / 4 = 1/1 - 1/3 + 1/5 - 1/7 + ... + (-1)**(n + 1) * 1 / (2 * n - 1) + ... 

例如,如果您希望 Pi 达到第 100 位,则表示残差(和最后一项)应小于 1e-100:

 1 / (2 * n - 1) < 1e-100
 2 * n  - 1 > 1e100
 n > 5e99

如您所见,5e99 loops 对于现代(超级)计算机 太多