代码之家  ›  专栏  ›  技术社区  ›  Joanna

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

  •  10
  • Joanna  · 技术社区  · 8 年前

    我必须使用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 回复  |  直到 8 年前
        1
  •  7
  •   Nina Scholz    8 年前

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

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

    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));
        2
  •  2
  •   Redu    8 年前

    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);