Even though Lua does not differentiate between floating point numbers and integers, there are some cases when you want to use integers. What is the best way to covert a number t
You could use math.floor(x)
From the Lua Reference Manual:
Returns the largest integer smaller than or equal to x.
Lua 5.3
introduced a new operator, called floor division
and denoted by //
Example below:
Lua 5.3.1 Copyright (C) 1994-2015 Lua.org, PUC-Rio
>12//5
2
More info can be found in the lua manual
@Hofstad is correct with the math.floor(Number x)
suggestion to eliminate the bits right of the decimal, you might want to round instead. There is no math.round
, but it is as simple as math.floor(x + 0.5)
. The reason you want to round is because floats are usually approximate. For example, 1
could be 0.999999996
12.4 + 0.5 = 12.9, floored 12
12.5 + 0.5 = 13, floored 13
12.6 + 0.5 = 13.1, floored 13
local round = function(a, prec)
return math.floor(a + 0.5*prec) -- where prec is 10^n, starting at 0
end
why not just use math.floor()
? it would make the indices valid so long as the numerator and denominator are non-negative and in valid ranges.