[removed] PI (π) Calculator

前端 未结 5 1730
忘了有多久
忘了有多久 2021-01-26 04:43

Is there a way to calculate pi in Javascript? I know there you can use Math.PI to find pie like this:

var pie = Math.PI;
alert(pie); // output \"3.1         


        
5条回答
  •  余生分开走
    2021-01-26 05:21

    Here is an implementation of a streaming algorithm described by Jeremy Gibbons in Unbounded Spigot Algorithms for the Digits of Pi (2004), Chaper 6:

    function * generateDigitsOfPi() {
        let q = 1n;
        let r = 180n;
        let t = 60n;
        let i = 2n;
        while (true) {
            let digit = ((i * 27n - 12n) * q + r * 5n) / (t * 5n);
            yield Number(digit);
            let u = i * 3n;
            u = (u + 1n) * 3n * (u + 2n);
            r = u * 10n * (q * (i * 5n - 2n) + r - t * digit);
            q *= 10n * i * (i++ * 2n - 1n);
            t *= u;
        }
    }
    
    // Demo
    let iter = generateDigitsOfPi();
    
    let output = document.querySelector("div");
    (function displayTenNextDigits() {
        let digits = "";
        for (let i = 0; i < 10; i++) digits += iter.next().value;
        output.insertAdjacentHTML("beforeend", digits);
        scrollTo(0, document.body.scrollHeight);
        requestAnimationFrame(displayTenNextDigits);
    })();
    div { word-wrap:break-word; font-family: monospace }

提交回复
热议问题