Lua替换%运算符

时间:2012-03-14 03:54:59

标签: math lua modulo

我想检查,如果一个数字可以被另一个数字整除:

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

这应该没有任何问题,但在我的服务器中使用Lua,如果脚本中有%,则脚本不会运行...我不知道原因是什么,所以有没有“为此替换?所以我可以查看数字可分性?

谢谢。

6 个答案:

答案 0 :(得分:49)

使用符合您需要的math.fmod(x,y)

  

返回x的除以x的除法的余数   商指向零。

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

答案 1 :(得分:25)

这不理想,但根据Lua 5.2 Reference Manual

  

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

答案 2 :(得分:3)

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

答案 3 :(得分:3)

function mod(a, b)
    return a - (math.floor(a/b)*b)
end

答案 4 :(得分:3)

使用math.fmod,在lua 5.1中将lua manual math.mod重新命名为math.fmod

答案 5 :(得分:1)

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

如果可能,我建议您升级。如果无法做到这一点,请使用列为5.0 Mathematical Functions之一的math.mod(已在Lua 5.1中重命名为math.fmod