我想要检查一个数字是否可被另一个数字整除:
for i = 1, 100 do
if i % 2 == 0 then
print( i .. " is divisible.")
end
end
这应该没有任何问题,但是在我的 Lua 服务器上,如果脚本中有 %
,则脚本不会运行……我不知道原因是什么,所以是否有任何“替代品”?这样我就可以检查数字可除性了吗?
谢谢。
使用math.fmod(x,y)
,它会做你想要的:
返回将商朝向零舍入后x除以y的余数。
math.fmod
这个函数,它在 Lua 5.1 中从 math.mod
重命名为 math.fmod
。然而,在 Lua 5.1 中还添加了 %
运算符,所以如果 OP 正在运行 Lua 5.0,则使用 fmod
是错误的函数。请记住,math.fmod
和 %
执行相同的操作。 - Simon Forsberg虽然不太理想,但根据Lua 5.2参考手册,有以下结论:
a % b == a - math.floor(a/b)*b
%
运算符在 Lua 5.1 中被添加。 - Simon Forsberg%
运算符。%
运算符。如果可能的话,我建议您进行升级。如果不可能,请使用 数学函数 中列出的 math.mod
(在 5.0 版本中被重命名为 math.fmod
Lua 5.1)。
function mod(a, b)
return a - (math.floor(a/b)*b)
end
for i = 1, 100 do
if (math.mod(i,2) == 0) then
print( i .. " is divisible.")
end
end
:S
。 - Cyclone%
不能正常工作”?根据Lua文档 Lua支持通常的算术运算符:二进制+(加法)-(减法)(乘法)/(除法)%(模数)和^(指数);以及一元-(否定)。* - Simon Forsberg%
运算符。然而,5.1及更高版本支持。请参见我的答案。 - Simon Forsberg