21xrx.com
2025-04-03 19:39:09 Thursday
文章检索 我的文章 写文章
C++计算1000位圆周率
2023-07-10 02:24:03 深夜i     33     0
C++ 计算 1000位 圆周率 算法

计算圆周率一直是数学和计算机科学领域中一个重要的课题。而 C++ 作为一门高效的编程语言,可以用来实现计算圆周率的算法。

在计算圆周率的过程中,经常使用的一个算法是 Machin公式。这个公式是由英国数学家约翰·马钦所发现。这个公式的形式如下:

$\pi=16 \arctan (\frac{1}{5})-\frac{4 \arctan (\frac{1}{239})}{10}$

因为 C++ 的 math 头文件中已经包含了 arctan 函数,所以我们可以直接使用该函数来实现 Machin 公式。这样就可以比较容易地计算圆周率了。

不过,计算圆周率时需要考虑到精度问题。因为圆周率无限不循环小数,所以计算精度很难完全保证。所以通常计算圆周率时,需要对结果进行舍入或截断。在 C++ 中,我们可以使用 precision 设置计算精度。例如,下面的代码可以计算 1000 位圆周率:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
  int p = 1000; // 精度为1000位
  int r = p + 10; // 保留10位小数
  cout << fixed << setprecision(10);
  // 计算圆周率
  double pi = 16.0 * atan(1.0 / 5.0) - 4.0 * atan(1.0 / 239.0);
  double old_pi = 0.0;
  int n = 0;
  while (n < 1000)
  {
    ++n;
    old_pi = pi;
    pi = pi + pow(-1, n) * (16.0 * atan(1.0 / 5.0) / pow(5.0, 2.0 * n - 1.0) - 4.0 * atan(1.0 / 239.0) / pow(239.0, 2.0 * n - 1.0));
    if (abs(pi - old_pi) < pow(10.0, -r)) // 计算精度达到
    
      break;
    
  }
  // 输出结果
  cout << "pi = " << pi << endl;
  return 0;
}

在本代码中,我们通过 while 循环来不断计算圆周率,并且比较前一次计算结果与该次计算结果之间的差距,以判断精度是否足够。当计算精度达到后,循环结束。最后,我们输出结果。

总之,使用 C++ 计算圆周率需要进行很多的精度计算和算法优化,但是 C++ 提供了丰富的数学计算库以及高效的编程语言特性,使计算计算圆周率成为可能。

  
  

评论区