使用Gregory-Leibniz系列在JavaScript中计算Pi

时间:2016-09-19 13:55:53

标签: javascript pi

我必须使用Gregory-Leibniz系列计算Pi的值:

  

pi = 4 *((1/1 - 1/3)+(1/5 - 1/7)+(1/9 - 1/11)+ ...)

我想在JavaScript中编写一个函数,该函数将需要显示为参数的位数。但我不确定我的思维方式是否合适。

这是我到目前为止所得到的:

function pi(n) {
  var pi = 0;
  for (i=1; i <= n; i+2) {
    pi = 4 * ((1/i) + (1/(i+2)))
  }
  return pi;
}

如何编写pi计算,以便计算值直到n?

2 个答案:

答案 0 :(得分:6)

您可以使用增量4并在函数末尾乘以4

n不是数字位数,而是系列值的计数器。

&#13;
&#13;
function pi(n) {
    var v = 0;
    for (i = 1; i <= n; i += 4) {  // increment by 4
        v +=  1 / i - 1 / (i + 2); // add the value of the series
    }
    return 4 * v;                  // apply the factor at last
}

console.log(pi(1000000000));
&#13;
&#13;
&#13;

答案 1 :(得分:2)

你也可以这样做;该函数将迭代10M次并返回PI,小数点后面有n个有效数字。

function getPI(n){
  var i = 1,
      p = 0;
  while (i < 50000000){
  	p += 1/i - 1/(i+2);
  	i += 4;
  }
  return +(4*p).toFixed(n);
}

var myPI = getPI(10);
console.log("myPI @n:100M:", myPI);
console.log("Math.PI     :", Math.PI);
console.log("The Diff    :", Math.PI-myPI);