web-dev-qa-db-de.com

Lua-Ersatz für den Operator%

Ich möchte prüfen, ob eine Nummer durch eine andere Nummer teilbar ist:

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

Dies sollte ohne Probleme funktionieren, aber mit der Lua in meinem Server wird das Skript nicht ausgeführt, wenn ein % im Skript vorhanden ist. Ich weiß nicht, was der Grund ist. So konnte ich die Rufnummernüberprüfung überprüfen?

Vielen Dank.

27
Cyclone

Es ist nicht ideal, aber laut Lua 5.2 Reference Manual :

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

24
ninesided

Verwenden Sie math.fmod(x,y), das macht was Sie wollen:

Gibt den Rest der Division von x durch y zurück, die die .__ rundet. Quotient gegen Null.

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

Verwenden Sie math.fmod, accroding lua manualmath.mod wurde in lua 5.1 in math.fmod umbenannt.

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 unterstützte den %-Operator nicht.

Lua unterstützt die üblichen arithmetischen Operatoren: das binäre + (Addition), - (Subtraktion), * (Multiplikation),/(Division) und ^ (Exponentiation); und unary - (negation).

https://www.lua.org/manual/5.0/manual.html

Lua 5.1 unterstützt jedoch den %-Operator.

Lua unterstützt die üblichen arithmetischen Operatoren: das binäre + (Addition), - (Subtraktion), * (Multiplikation),/(Division),% (Modulo) und ^ (Exponentiation); und unary - (negation).

https://www.lua.org/manual/5.1/manual.html

Wenn möglich, würde ich empfehlen, dass Sie ein Upgrade durchführen. Wenn dies nicht möglich ist, verwenden Sie math.mod, das als eine der Mathematical Functions in 5.0 aufgeführt ist (es wurde in Lua 5.1 umbenannt in math.fmod).

0
Simon Forsberg