web-dev-qa-db-fra.com

Lua remplacement pour l'opérateur%

Je veux vérifier si un nombre est divisible par un autre nombre:

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

Cela devrait fonctionner sans aucun problème, mais avec Lua sur mon serveur, le script ne s'exécute pas s'il y a un % dans le script ... Je ne sais pas quelle est la raison, alors existe-t-il un "remplacement"? Pour que je puisse vérifier la divsibilité des nombres?

Je vous remercie.

27
Cyclone

Ce n'est pas idéal, mais selon le Lua 5.2 Reference Manual :

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

24
ninesided

Utilisez math.fmod(x,y) qui fait ce que vous voulez:

Retourne le reste de la division de x par y qui arrondit le quotient vers zéro.

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

Utiliser math.fmod, accroding lua manualmath.mod a été renommé en math.fmod dans lua 5.1.

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 ne supportait pas l'opérateur %.

Lua supporte les opérateurs arithmétiques habituels: le binaire + (addition), - (soustraction), * (multiplication),/(division) et ^ (exponentiation); et unaire - (négation).

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

Cependant, Lua 5.1 prend en charge l'opérateur %.

Lua supporte les opérateurs arithmétiques habituels: le binaire + (addition), - (soustraction), * (multiplication),/(division),% (modulo) et ^ (exponentiation); et unaire - (négation).

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

Si possible, je vous recommanderais de mettre à jour. Si cela n’est pas possible, utilisez math.mod, qui figure dans l’une des fonctions mathématiques in 5.0 (il a été renommé math.fmod dans Lua 5.1

0
Simon Forsberg