Lua中%运算符的替代方法

我想检查一个数字是否能被另一个数字整除:

for i = 1, 100 do
    if i % 2 == 0 then
        print( i .. " is divisible.")
    end
end

这应该没有问题,但使用我服务器上的 Lua 时,如果脚本中有“%”,脚本就无法运行...我不知道是什么原因,所以有没有任何“替代品”可以用来检查数字的可整除性?

谢谢。

原文链接 https://stackoverflow.com/questions/9695697

点赞
stackoverflow用户1030
stackoverflow用户1030

虽然不是理想的情况,但根据Lua 5.2参考手册

a%b == a - math.floor(a/b) * b

2012-03-14 04:02:50
stackoverflow用户107090
stackoverflow用户107090

使用 math.fmod(x,y) 来实现你想要的功能:

math.fmod(x,y) 函数返回 x 除以 y 的余数,该余数将向零舍入。

参见:http://www.lua.org/manual/5.2/manual.html#pdf-math.fmod

2012-03-14 11:47:53
stackoverflow用户2694320
stackoverflow用户2694320
对于 i = 1100 的每个数,如果它可以被 2 整除,
就输出 i 和 " is divisible."
for i = 1, 100 do
    if (math.mod(i,2) == 0) then
        print( i .. " is divisible.")
    end
end
2013-08-18 17:12:57
stackoverflow用户2693927
stackoverflow用户2693927
function mod(a, b)
    return a - (math.floor(a/b)*b)
end
function mod(a, b)   
    return a - (math.floor(a/b)*b)
end

将上述 Lua 代码块翻译成中文并保留原来的 markdown 格式,如上所示。

2013-12-31 13:20:16
stackoverflow用户2576076
stackoverflow用户2576076

根据lua手册,使用math.fmodmath.mod在lua 5.1中已更名为math.fmod

2016-12-15 06:51:10
stackoverflow用户1310566
stackoverflow用户1310566

Lua 5.0 不支持 % 运算符。

Lua 支持一般算术运算符:二元 +(加法),-(减法),*(乘法),/(除法)和^(指数);一元-(否定)。

https://www.lua.org/manual/5.0/manual.html

然而 Lua 5.1 支持 % 运算符。

Lua 支持一般算术运算符:二元 +(加法),-(减法),*(乘法),/(除法),%(取模)和^(指数);一元-(否定)。

https://www.lua.org/manual/5.1/manual.html

如果可能的话,我建议您进行升级。如果无法升级,请使用 math.mod,它是在 5.0 中列出的数学函数之一(在Lua 5.1中被重命名为 math.fmod)。

2018-01-07 20:52:13