Lua: преобразование из float в int

Несмотря на то, что Lua не различает числа с плавающей запятой и целые числа, в некоторых случаях вы хотите использовать целые числа. Каков наилучший способ преобразовать число в целое, если вы не можете выполнить C-подобное приведение или без чего-то вроде Python int?

Например, при вычислении индекса для массива в

idx = position/width

как вы можете убедиться, что idxявляется допустимым индексом массива? Я придумал решение, которое использует string.find, но, возможно, есть метод, использующий арифметику, который, очевидно, будет намного быстрее. Мое решение:

function toint(n)
    local s = tostring(n)
    local i, j = s:find('%.')
    if i then
        return tonumber(s:sub(1, i-1))
    else
        return n
    end
end
28
задан ddk 11 March 2012 в 11:24
поделиться