Math Lua替换%operator

Math Lua替换%operator,math,lua,modulo,Math,Lua,Modulo,我想检查一个数是否可以被另一个数整除: for i = 1, 100 do if i % 2 == 0 then print( i .. " is divisible.") end end 这应该可以正常工作,但如果脚本中存在%,则使用我的服务器中的Lua脚本不会运行。。。我不知道原因是什么,所以有什么“替代品”吗?这样我就可以检查数字的可分割性了 谢谢。这不太理想,但根据: a%b==a-数学楼层(a/b)*b 使用math.fmod(x,y)它可以满足您的需

我想检查一个数是否可以被另一个数整除:

for i = 1, 100 do
    if i % 2 == 0 then
        print( i .. " is divisible.")
    end
end
这应该可以正常工作,但如果脚本中存在
%
,则使用我的服务器中的Lua脚本不会运行。。。我不知道原因是什么,所以有什么“替代品”吗?这样我就可以检查数字的可分割性了


谢谢。

这不太理想,但根据:

a%b==a-数学楼层(a/b)*b

使用
math.fmod(x,y)
它可以满足您的需要:

返回x除以y的剩余部分,该部分对 向零的商


使用
math.fmod
,在Lua5.1中,accroding
math.mod
被重命名为
math.fmod

Lua5.0不支持
%
操作符

Lua支持常用的算术运算符:二进制+(加法)、-(减法)、*(乘法)、/(除法)和^(指数运算);和一元否定

但是,Lua5.1确实支持
%
操作符

Lua支持常用的算术运算符:二进制+(加法)、-(减法)、*(乘法)、/(除法)、%(模)和^(指数运算);和一元否定


如果可能,我建议您升级。如果这是不可能的,请使用
math.mod
,它被列为5.0中的一个(它被重命名为
math.fmod
in)

服务器运行的是什么版本的Lua?我认为它的5.0或更高版本
:S
。听起来你有一些编码问题;也许如果你找到了它的编码方式,你就可以偷偷地把一个
%
通过。试试“%”或“\%”或“%25”我对这个问题投了反对票,因为我认为它问的问题是错误的:这里真正的问题是“为什么
%
在Lua中对我不起作用”?根据Lua,它支持常用的算术运算符:二进制+(加法),-(减法),*(乘法),/(除法),%(模)和^(指数运算);和一元-(否定)。@Javier Lua 5.0不支持
%
运算符。然而,5.1及更高版本则不适用。请看我的答案。这似乎是Lua旧版本的一个变通方法。在Lua5.2及更高版本中,至少%可以正常工作。@HenrikErlandsson
%
作为运算符添加到Lua5.1中。奇怪的是,它在最近的文档中没有记录。(至少通过一个简单的测试,它似乎像fmod一样工作。)@HenrikErlandsson在最近的文档中没有记录,该函数在5.0中被称为
mod
,在5.1中被重命名为
fmod
math.fmod
在Lua5.0中不存在,它在Lua5.1中被从
math.mod
重命名为
math.fmod
。但是,Lua5.1还添加了
%
操作符,因此如果OP运行的是Lua5.0,
fmod
是错误的函数。
for i = 1, 100 do
    if (math.mod(i,2) == 0) then
        print( i .. " is divisible.")
    end
end
function mod(a, b)
    return a - (math.floor(a/b)*b)
end