Lua中处理大数值的方法

我需要在 Lua 中存储一个大数值,例如63680997318088143281752740767766707563546963464218564507450892460763521488675430192536461。

如果我简单地赋值给一个变量,我得不到真实的数值:

local n = 63680997318088143281752740767766707563546963464218564507450892460763521488675430192536461
print(string.format("%.0f",n)) -- 输出63680997318088143929455344863959288468423333130904105158115881995380577784972357899649024

那么如何处理大数值呢?

点赞
用户1442917
用户1442917

Lua 的数字具有有限的精度,但你试图存储超过其存储能力的数字。你需要使用不同的机制来存储它们并对这些数字进行操作。

关键词是“bignum”和“任意精度数”。快速的谷歌搜索可以找到几个纯 Lua 模块(bignumlua-nums)以及一个基于 C 的模块(lmapm)。还可以参考这篇 SO 回答来了解其他选择。

2017-07-23 22:54:57