以Lua计算值以提高精度

以Lua计算值以提高精度,lua,evaluation,calculation,evaluate,Lua,Evaluation,Calculation,Evaluate,表达式print(math.pi)将pi的值作为3.1415926535898给出,在使用lua 5.3的CPU上最多可保留13位小数位。是否可以获取最多小数位数的值,例如math.pi的值,最多可获取50位小数。如果是这样,以lua计算的最高限额是多少 print(string.format("%0.50f", math.pi)) 打印3.14159265358979311599796346854418516159057617187500 从 我不知道为什么两个数字不同。但是,如果要分别以高

表达式
print(math.pi)
pi
的值作为
3.1415926535898
给出,在使用
lua 5.3的CPU上最多可保留13位小数位。是否可以获取最多小数位数的值,例如
math.pi
的值,最多可获取50位小数。如果是这样,以lua计算的最高限额是多少

print(string.format("%0.50f", math.pi))
打印3.14159265358979311599796346854418516159057617187500


我不知道为什么两个数字不同。但是,如果要分别以高于print或tonumber的精度打印,则必须自己格式化数字。

Lua使用双精度浮点;尾数有52位,所以数字限制在16位左右


如果您需要更高的精度,请使用多精度库,例如,它使用212尾数位的四倍精度,并给出大约64位小数。然后
qd.pi
给出3.1415926535897932384626433832795028841971693993751058209749445923。

尽管格式
%0.50f
但在
math.pi
中只有前52位正确。
#define PI      (l_mathop(3.141592653589793238462643383279502884))