如何在Lua中将字符串转换为整数?
我有一个这样的字符串:
a = "10"
我想把它转换成10,这个数字。
如何在Lua中将字符串转换为整数?
我有一个这样的字符串:
a = "10"
我想把它转换成10,这个数字。
当前回答
Tonumber (e [, base])
Tonumber有两个参数,第一个是转换为数字的字符串,第二个是e的进制。
返回值tonumber以10为基数。
如果没有提供基数,它将数字转换为以10为基数。
> a = '101'
> tonumber(a)
101
如果提供了base,则将其转换为给定的base。
> a = '101'
>
> tonumber(a, 2)
5
> tonumber(a, 8)
65
> tonumber(a, 10)
101
> tonumber(a, 16)
257
>
如果e包含无效字符,则返回nil。
> --[[ Failed because base 2 numbers consist (0 and 1) --]]
> a = '112'
> tonumber(a, 2)
nil
>
> --[[ similar to above one, this failed because --]]
> --[[ base 8 consist (0 - 7) --]]
> --[[ base 10 consist (0 - 9) --]]
> a = 'AB'
> tonumber(a, 8)
nil
> tonumber(a, 10)
nil
> tonumber(a, 16)
171
我的回答是考虑到Lua5.3
其他回答
Lua中的所有数字都是浮点数(编辑:Lua 5.2或以下)。如果你真的想转换为“int”(或者至少复制这个行为),你可以这样做:
local function ToInteger(number)
return math.floor(tonumber(number) or error("Could not cast '" .. tostring(number) .. "' to number.'"))
end
在这种情况下,您可以显式地将字符串(或者实际上,无论它是什么)转换为一个数字,然后截断该数字,就像Java中的(int)强制转换一样。
编辑:这在Lua 5.3中仍然有效,即使Lua 5.3有实整数,因为math.floor()返回一个整数,而如果number是一个浮点数,那么像number // 1这样的操作符仍然会返回一个浮点数。
Lua数字类型是双精度类型,在luaconf中实现。H详细说明 一般有两种选择:
[推荐使用]5.3版本的Lua脚本中包含全局变量。Lua文件,其中包括tonumber()和tostring()方法,可以实现数字和字符串的转换。 tointeger()也可以使用此方法将其转换为数字。
但是根据你的实际场景,如果只是为了计算,可以根据这个操作符号来转换Lua。如
s = "1" + 2; -- lua will convert "1" to 1
print(s)
s1 = "e" + 3; -- error
print(s1)
更多关于lua的信息,可以查看lua官方文档
希望对您有用,期待您的回复,期待与您进一步沟通!
自从lua 5.3以来,有了一个新的数学。将字符串转换为整数的Tointeger函数。只是整数,没有浮点数。
例如:
print(math.tointeger("10.1")) -- nil
print(math.tointeger("10")) -- 10
如果你想转换整数和浮点数,tonumber函数更合适。
Tonumber (e [, base])
Tonumber有两个参数,第一个是转换为数字的字符串,第二个是e的进制。
返回值tonumber以10为基数。
如果没有提供基数,它将数字转换为以10为基数。
> a = '101'
> tonumber(a)
101
如果提供了base,则将其转换为给定的base。
> a = '101'
>
> tonumber(a, 2)
5
> tonumber(a, 8)
65
> tonumber(a, 10)
101
> tonumber(a, 16)
257
>
如果e包含无效字符,则返回nil。
> --[[ Failed because base 2 numbers consist (0 and 1) --]]
> a = '112'
> tonumber(a, 2)
nil
>
> --[[ similar to above one, this failed because --]]
> --[[ base 8 consist (0 - 7) --]]
> --[[ base 10 consist (0 - 9) --]]
> a = 'AB'
> tonumber(a, 8)
nil
> tonumber(a, 10)
nil
> tonumber(a, 16)
171
我的回答是考虑到Lua5.3
我建议你去Hyperpolyglot看看,它有一个很棒的对比:http://hyperpolyglot.org/
http://hyperpolyglot.org/more#str-to-num-note
ps.实际上Lua转换的是双精度数而不是整型数。
数字类型表示实数(双精度浮点数) 数字。
http://www.lua.org/pil/2.3.html