在Lua中计算更高精度的值

表达式 print(math.pi) 在我的 CPU 上使用 lua 5.3 给出了 3.1415926535898 的值,精确到小数点后 13 位。是否可以获得更多小数位数的值,例如 math.pi 的值精确到 50 个小数位。如果可以的话,在 Lua 中可以计算到最高限制是多少?

点赞
用户2858170
用户2858170
打印出数学圆周率,保留50位小数。

```print(string.format("%0.50f", math.pi))```

输出结果为3.14159265358979311599796346854418516159057617187500。

引自 [https://www.lua.org/source/5.3/lmathlib.c.html](https://www.lua.org/source/5.3/lmathlib.c.html)

#define PI (l_mathop(3.141592653589793238462643383279502884))

```

不知道为什么这两个数字不同。但是,如果您想以比print或tonumber函数支持的更高精度进行打印,则需要自己格式化数字。

2020-04-23 05:53:41
用户107090
用户107090

Lua 使用双精度浮点数;尾数有 52 位,因此数字限制为约 16 个小数位。

如果需要更高的精度,请使用多倍精度库,如 lqd,它使用四倍精度和 212 位尾数,并提供约 64 个小数位。然后 qd.pi 将给出 3.1415926535897932384626433832795028841971693993751058209749445923。

2020-04-23 11:52:06