Luastring为int
我如何将一个string转换为一个整数在Lua中? 谢谢。
我有这样的string:
a = "10"
我想把它转换成10,这个数字。
使用tonumber
函数 。 如在a = tonumber("10")
。
您可以在算术运算中使用string来强制进行隐式转换,例如在a= "10" + 0
,但是这并不像明确使用tonumber
那样清晰或清晰。
Lua中的所有数字都是浮点数( 编辑: Lua 5.2或更less)。 如果你真的想转换为“int”(或至less复制这种行为),你可以这样做:
local function ToInteger(number) return math.floor(tonumber(number) or error("Could not cast '" .. tostring(number) .. "' to number.'")) end
在这种情况下,你显式地将string(或者真的,不pipe它是什么)转换成一个数字,然后截断这个数字就像(int)types转换在Java中所做的那样。
编辑:这仍然工作在Lua 5.3,即使认为Lua 5.3有真正的整数,因为math.floor()
返回一个整数,而像number // 1
的运算符仍然会返回一个浮点数如果number
是一个浮点数。
local a = "10" print(type(a)) local num = tonumber(a) print(type(num))
产量
string number
说你想变成一个数字的string在variablesS
a=tonumber(S)
只要S
中有数字和唯一的数字,它就会返回一个数字,但是如果有任何不是数字的字符(除了浮点数),它将返回零
更明确的select是使用tonumber 。
从5.3.2开始,此函数将自动检测(带符号)整数,float(如果存在一个点)和hex(如果string以“0x”或“0X”开始,则为整数和浮点数)。
以下片段较短但不等同:
-
a + 0 -- forces the conversion into float, due to how + works
-
a | 0 -- (| is the bitwise or) forces the conversion into integer. --However, unlike math.tonteger, it errors if it fails
您可以使访问者保持“10”为int 10。
例:
x = tonumber("10")
如果你打印xvariables,它将输出一个int 10而不是“10”
像Python进程一样
x = int(“10”)
谢谢。
我会build议检查Hyperpolyglot,有一个很棒的比较: http : //hyperpolyglot.org/
http://hyperpolyglot.org/more#str-to-num-note
PS。 其实Lua转化成双打而不是整数。
数字types表示实数(双精度浮点数)。
这是你应该放的
local stringnumber = "10" local a = tonumber(stringnumber) print(a + 10) output: 20