2024-12-12 08:00:06

Lua字符串到int

如何在Lua中将字符串转换为整数?

我有一个这样的字符串:

a = "10"

我想把它转换成10,这个数字。


当前回答

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这样的操作符仍然会返回一个浮点数。

其他回答

假设你想转化为数字的字符串在变量S中

a=tonumber(S)

如果S中有数字且只有数字,它将返回一个数字, 但如果有任何字符不是数字(浮点数的句点除外) 它会返回nil

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这样的操作符仍然会返回一个浮点数。

这是你应该写的

local stringnumber = "10"
local a = tonumber(stringnumber)
print(a + 10)

output:

20

可以使用tonumber()将字符串转换为数字,可以是浮点数或int型。

例如:tonumber("11")——返回:11

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