Lua字符串到数字-不要使用e表示法
我有一个代表一个大数字的字符串,不超过19位,类似于“3435939477110523131”,我想把它从字符串转换成数字,然后再转换回来。 但是当我使用tonumber()时,它会用E表示法进行转换,这是非常愚蠢的Lua字符串到数字-不要使用e表示法,lua,Lua,我有一个代表一个大数字的字符串,不超过19位,类似于“3435939477110523131”,我想把它从字符串转换成数字,然后再转换回来。 但是当我使用tonumber()时,它会用E表示法进行转换,这是非常愚蠢的 Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio > a = "3435939477110523131" > print(tonumber(a)) 3.4359394771105e+18 它丢失了一些数字。有没有一
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> a = "3435939477110523131"
> print(tonumber(a))
3.4359394771105e+18
它丢失了一些数字。有没有一种方法可以将其转换为不带e符号的整数?“3435939477110523131”
太大,无法准确地存储在lua 5.1中
我们可以通过以下方式看到这一点:
local a=“3435939477110523131”
本地电话号码=电话号码(a)
本地计算机成员=3435939477110522900——这是数字'a'结束为。
打印(我们的编号==计算机编号)
在lua 5.1中,这将打印为真,您可以在lua 5.1中准确存储的最大整数为2^53-1
,即9007199254740991
print将尝试使用将其参数转换为字符串,对于一个数字,这将导致科学记数法,而您无法捕获所有精度 通过使用
string.format
str=“3435939477110523131”
num=tonumber(str)
打印(str,num,string.format(“%.f”,num))
在5.3版中,如果将
string.format
与“%.f”
一起使用,则会得到错误的结果,请改用tostring
或“%.i”
Lua5.1数字是
double
(最大整数值是2^53
,小于10^16
),要精确打印它们,请使用print(“.f”):format(n))
Lua5.3+整数最多是2^63
(19位),如果您正在寻找的话,它支持任意精度的数字。@PaulKulchenko,如果只需要整数也可以。
str = "3435939477110523131"
num = tonumber(str )
print(str, num, tostring(num), string.format("%.i",num), string.format("%.f",num))