计算Pi值到' n'小数位

时间:2018-02-05 10:52:25

标签: c++ pi

我试图制作一个C ++程序来计算Pi的值,直到' n'使用Leibniz formula.

的小数位数

号码' 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 ++的初学者。

非常感谢:)

1 个答案:

答案 0 :(得分:3)

由于您要计算Pi最多任意 n个数字,您需要一个库来处理大浮点数;见

C++ library for big float numbers

真正的麻烦是 Leibniz公式在上下文中无效。达到的实际精度可以估算为公式

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

如果,对于intance,您希望Pi达到100位数,则表示剩余(和最后一项)应小于1e-100

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

正如您所看到的5e99 循环远远太多现代(超级)计算机