Lua替换%运算符

Cyc*_*one 30 math lua modulo

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

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

这应该没有任何问题,但在我的服务器中使用Lua脚本不会运行,如果脚本中有一个%...我不知道原因是什么,那么有什么"替代"吗?所以我可以检查数字可分性?

谢谢.

lhf*_*lhf 49

使用math.fmod(x,y)哪个做你想要的:

返回x除以x的除法的余数,将商舍入为零.

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

  • 在Lua 5.0中不存在`math.fmod`,在Lua 5.1中将其从`math.mod`重命名为`math.fmod`。但是,Lua 5.1还添加了`%`运算符,因此,如果OP运行的是Lua 5.0,则`fmod`是错误的函数。 (2认同)

nin*_*ded 26

它并不理想,但根据Lua 5.2参考手册:

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

  • 对于旧版本的Lua来说,这似乎是一种解决方法.在Lua 5.2及更高版本中,至少%可以正常工作. (6认同)
  • @HenrikErlandsson`%`被添加为Lua 5.1中的运算符。 (2认同)

Sim*_*erg 8

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 中math.mod列为数学函数math.fmod之一的函数(在Lua 5.1中已重命名为)


小智 6

function mod(a, b)
    return a - (math.floor(a/b)*b)
end
Run Code Online (Sandbox Code Playgroud)


小智 5

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