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.
Es ist nicht ideal, aber laut Lua 5.2 Reference Manual :
a% b == a - math.floor (a/b) * b
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.
function mod(a, b)
return a - (math.floor(a/b)*b)
end
Verwenden Sie math.fmod
, accroding lua manualmath.mod
wurde in lua 5.1 in math.fmod
umbenannt.
for i = 1, 100 do
if (math.mod(i,2) == 0) then
print( i .. " is divisible.")
end
end
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).
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).
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
).