Преобразование из строки

Простые типы / Числа / Integer

-- tonumber gives an integer for whole digits
local number = tonumber("42")
-- number = 42

-- Spaces around are ignored
local padded = tonumber(" 42 ")
-- padded = 42

-- Not a number: nil, not 0 and not an error
local not_number = tonumber("42 apples")
-- not_number = nil

-- A dot makes a float, math.tointeger fixes it
local text_float = tonumber("3.0")
-- text_float = 3.0
local whole = math.tointeger(text_float)
-- whole = 3

-- A real fraction has no integer form
local fraction = math.tointeger(3.5)
-- fraction = nil

print("number = " .. number)
print("padded = " .. padded)
print("not_number = " .. tostring(not_number))
print("text_float = " .. text_float)
print("whole = " .. whole)
print("fraction = " .. tostring(fraction))

-- The nil from tonumber breaks the next sum
local ok, err = pcall(function()
  return not_number + 1
end)
-- ok = false
-- err = main.lua:32: attempt to perform
-- arithmetic on a nil value
-- (upvalue 'not_number')
print("ok = " .. tostring(ok))
print("err = " .. err)