lua - 浮点 Lua: 从浮点转换为 int

  显示原文与译文双语对照的内容
74 1

尽管Lua并不区分浮点数和整数,但是有些情况下需要使用整数。如果不能将数字类似于 int 或者者没有类似于 python的,那么将数字隐藏到整数是最好的方法。

例如在计算 array的索引时

idx = 位置/宽度

如何确保 idx 是有效的array 索引?我已经经提出了一个使用 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
时间:原作者:0个回答

136 4

你可以用 math.floor(x)

Lua参考手册:

返回小于或者等于x的最大整数。

原作者:
63 0

Lua 5.3 引入了一个名为 floor division的新操作符,并由 // 表示

以下示例:

版权所有 5.3.1版权所有( C ) 1994 -2015 Lua.org, puc

> 12//5

2

更多信息可以在 lua手册中找到。

原作者:
114 3

@Hofstad 与 math.floor(Number x) 建议正确,以消除小数的位,你可以能想要反转。没有 math.round,,但它和 math.floor(x + 0.5) 一样简单。你想转的原因是,浮点数通常是近似的。例如 1可以为 0.999 999996

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
原作者:
...