准确计算 PI 到 JavaScript 中的 x 个位置

Accurately calculating PI to x places in JavaScript

我知道以前有人问过这个问题,但我找不到确切的答案。 我正在尝试制作一个可以准确地将 pi 计算到 x 位置的函数。 到目前为止,这是我的代码:

  function odd(num) { return num % 2;}
  var pi = 3;
  var x=2;
  for (var acc = 1; acc < 30000; acc++) {
    if (Odd(acc)) {
      pi = pi + (4/(x * (x+1) * (x+2)));
    } else {
      pi = pi - (4/(x * (x+1) * (x+2)));
    }
    x=x+2;
  }
  console.log(pi);

这是有效的,但我如何指定长度同时确保它保持准确?

由于这个级数是交替的,所以部分和的误差总是小于下一项的绝对值。所以本质上 n 条款后的错误是关于 1/(2*n^3).

此外,对于浮点运算,您将得到 n*1e-16 级的误差,因此可实现的最佳结果约为 n=1e4,误差为 1e-12 级。


再三考虑,从最小项到最大项求和将避免累积大的浮点误差,因为下一个误差的大小约为下一项乘以机器 epsilon 的大小。因此,总误差将有一个与绝对和成正比的界限,这是一个较小的有限值 5e-15。这个反向求和应该允许几乎没有错误的计算,直到 n^3=10^15n=10^5 有 15 个正确的地方。