javascript - 更准确的Pi值?

chr*_*ong 6 javascript math pi

我输入Math.PI;Chrome控制台并返回:

3.141592653589793

然后我输入Math.PI - 3.141592653589793;0返回.

有没有办法在Javascript中获得更准确的值(例如3.1415926535897932384)Math.PI

use*_*484 5

我不明白为什么你需要如此准确的 PI,但你可以:

a) 使用莱布尼兹公式自行计算 PI

b) 自己定义PI(使用这个库)

var PI = new bigdecimal.BigDecimal("3.141592653589793238462643383279");
Run Code Online (Sandbox Code Playgroud)


如果您确实需要, 可以在这里找到 PI 的前 100,000 位。

  • 选项 (b) 对我不起作用:“alert (PI == Math.PI);”返回“true”,而您断言它不应该相同。 (2认同)
  • 这仍然不会给你更高的精度。由于浮点数限制,`3141592653589793238462643383279/10`只能精确到`3.141592653589793`。 (2认同)
  • “BigDecimal for Javascript 是不可变、任意精度、有符号十进制数的纯 Javascript 实现。” (2认同)

Ami*_*oki 4

JavaScript 中的最大小数位限制为15.

所以你不能得到超过 15 位小数。

但是你可以通过这样做得到最多20位小数,但它不准确

Math.PI.toFixed(20); //3.14159265358979311600
Run Code Online (Sandbox Code Playgroud)

这将为您提供 20 位小数的 PI 值。

注: 20为 的最大值,0为 的最小值toFixed()

所以尝试Math.PI.toFixed(100)会抛出错误。

  • 是的,可以得到 20 位小数,但“11600”不是 PI 的一部分。 (3认同)
  • IEEE754 双精度数并不总是四舍五入到小数点后 15 位,这是一种误导。 (2认同)
  • 事实上,人们相信 11600 在饼图中出现的次数是无限的。只是不在那个位置而已。:) (2认同)