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表示实数(双精度浮点数)。

http://www.lua.org/pil/2.3.html

这是你应该放的

 local stringnumber = "10" local a = tonumber(stringnumber) print(a + 10) output: 20