web-dev-qa-db-ja.com

%演算子のLua置換

数値が別の数値で割り切れるかどうかを確認したい:

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

これは問題なく機能するはずですが、私のサーバーのLuaでは、スクリプトに%が含まれているとスクリプトは実行されません...理由がわからないので、それ?だから私は数の可分性を確認できますか?

ありがとうございました。

29
Cyclone

理想的ではありませんが、 Lua 5.2 Reference Manual

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

26
ninesided

必要なことを行うmath.fmod(x,y)を使用します。

商をゼロに丸めるxをyで割った余りを返します。

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

49
lhf
function mod(a, b)
    return a - (math.floor(a/b)*b)
end
3
Jim Gao

math.fmodを使用して、 luaマニュアルmath.modはlua 5.1でmath.fmodに名前が変更されました。

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

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で 数学関数 の1つとしてリストされているmath.modを使用します( Lua 5.1math.fmodに名前が変更されました)

1
Simon Forsberg