我正在try 使用Gauss-Legendre算法将圆周率计算到大量的小数位,如下所示
然而,它只返回大约15位圆周率.显然,这是因为在Java脚本中的数学运算是使用64位浮点值执行的,而16位精度正好达到了它们可以准确表示的极限.
这是我的代码
let a = 1,
b = 1 / Math.sqrt(2),
t = 1 / 4,
p = 1;
let i = 0;
while (a - b < 3) {
i++;
let an = (a + b) / 2;
b = Math.sqrt(a * b);
t = t - p * (a - an) ** 2;
p = 2 * p;
a = an;
if (i == 100) break;
let pi = (a + b) ** 2 / (4 * t);
console.log(pi);
}
我想知道有没有什么办法可以让javascript返回更多位的圆周率. 提前谢谢你