Aunque Lua no diferencia entre números de coma flotante y enteros, hay algunos casos en los que desea usar enteros. ¿Cuál es la mejor manera de convertir un número en un número entero si no se puede hacer un molde tipo C o sin algo como el int
de Python?Lua: convirtiendo de float a int
Por ejemplo en el cálculo de un índice para una matriz en
idx = posición/anchura
cómo se puede garantizar idx
es un índice de la matriz válida? He encontrado una solución que usa string.find
, pero tal vez hay un método que usa aritmética que obviamente sería mucho más rápido. Mi solución:
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
Puede ampliar esta respuesta para tratar los números negativos arrojando algunas barras: 'math.floor (math.abs (x))' – Ziggy