Хотя Lua не делает различий между числами с плавающей запятой и целыми числами, в некоторых случаях вы хотите использовать целые числа.Каков наилучший способ преобразовать число в целое число, если вы не можете выполнить C-подобное приведение или без чего-либо вроде Python's int
?
Например, при расчете индекса для массива в
idx = позиция / ширина
как вы можете убедиться, что 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