计算 Lua 中的值以提高准确性
Calculating values in Lua to higher accuracy
表达式 print(math.pi)
将 pi
的值作为 3.1415926535898
在我的 CPU 和 lua 5.3
上给出最多 13 位小数。是否有可能获得最多小数位数的值,例如 math.pi
最多 50 位小数的值。如果是这样,它可以在 lua 中计算的最高限度是多少?
print(string.format("%0.50f", math.pi))
打印 3.14159265358979311599796346854418516159057617187500
来自https://www.lua.org/source/5.3/lmathlib.c.html
#define PI (l_mathop(3.141592653589793238462643383279502884))
我不知道为什么两个数字不同。但是如果你想比 print 或 tonumber 分别打印更高的精度,你是否必须自己格式化数字。
Lua使用双精度浮点数;尾数有 52 位,因此数字被限制为大约 16 位小数。
如果您需要更高的精度,请使用多精度库,例如 lqd,它使用具有 212 个尾数位的四双精度并提供大约 64 位小数。然后 qd.pi
给出 3.1415926535897932384626433832795028841971693993751058209749445923.
表达式 print(math.pi)
将 pi
的值作为 3.1415926535898
在我的 CPU 和 lua 5.3
上给出最多 13 位小数。是否有可能获得最多小数位数的值,例如 math.pi
最多 50 位小数的值。如果是这样,它可以在 lua 中计算的最高限度是多少?
print(string.format("%0.50f", math.pi))
打印 3.14159265358979311599796346854418516159057617187500
来自https://www.lua.org/source/5.3/lmathlib.c.html
#define PI (l_mathop(3.141592653589793238462643383279502884))
我不知道为什么两个数字不同。但是如果你想比 print 或 tonumber 分别打印更高的精度,你是否必须自己格式化数字。
Lua使用双精度浮点数;尾数有 52 位,因此数字被限制为大约 16 位小数。
如果您需要更高的精度,请使用多精度库,例如 lqd,它使用具有 212 个尾数位的四双精度并提供大约 64 位小数。然后 qd.pi
给出 3.1415926535897932384626433832795028841971693993751058209749445923.