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