"3435939477110523131" 太大,无法准确存储在 lua 5.1 中
我们可以这样做:
local a = "3435939477110523131"
local ourNumber = tonumber(a)
local computersNumber = 3435939477110522900 --this is the number `a` ends up as.
print(ourNumber == computersNumber)
在 lua 5.1 中,这将打印为 true,您可以在 lua 5.1 中准确存储的最大整数是2^53 - 1,即9007199254740991
print 将尝试使用将其参数转换为字符串,对于一个数字,这会导致科学记数法,并且您不会捕获所有精度。
您可以通过使用 string.format 将值转换为打印字符串来防止这种情况
str = "3435939477110523131"
num = tonumber(str)
print(str, num, string.format("%.f",num))
在 5.3 版本中,如果您将 string.format 与 "%.f" 一起使用,您将得到不正确的结果,请改用 tostring 或 "%.i"
str = "3435939477110523131"
num = tonumber(str )
print(str, num, tostring(num), string.format("%.i",num), string.format("%.f",num))