How can I convert a string to an integer in Lua?
I have a string like this:
a = \"10\"
I would like it to be converted to 10, the n
It should be noted that math.floor()
always rounds down, and therefore does not yield a sensible result for negative floating point values.
For example, -10.4 represented as an integer would usually be either truncated or rounded to -10. Yet the result of math.floor() is not the same:
math.floor(-10.4) => -11
For truncation with type conversion, the following helper function will work:
function tointeger( x )
num = tonumber( x )
return num < 0 and math.ceil( num ) or math.floor( num )
end
Reference: http://lua.2524044.n2.nabble.com/5-3-Converting-a-floating-point-number-to-integer-td7664081.html
local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))
Output
string
number
I would recomend to check Hyperpolyglot, has an awesome comparison: http://hyperpolyglot.org/
http://hyperpolyglot.org/more#str-to-num-note
ps. Actually Lua converts into doubles not into ints.
The number type represents real (double-precision floating-point) numbers.
http://www.lua.org/pil/2.3.html
You can make an accessor to keep the "10" as int 10 in it.
Example:
x = tonumber("10")
if you print the x variable, it will output an int 10 and not "10"
same like Python process
x = int("10")
Thanks.
tonumber (e [, base])
tonumber
takes two arguments, first is string which is converted to number and second is base of e
.
Return value tonumber
is in base 10.
If no base
is provided it converts number to base 10.
> a = '101'
> tonumber(a)
101
If base is provided, it converts it to the given base.
> a = '101'
>
> tonumber(a, 2)
5
> tonumber(a, 8)
65
> tonumber(a, 10)
101
> tonumber(a, 16)
257
>
If e
contains invalid character then it returns 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
I answered considering Lua5.3
here is what you should put
local stringnumber = "10"
local a = tonumber(stringnumber)
print(a + 10)
output:
20