J'ai trouvé un comportement étrange dans Python concernant les nombres négatifs :
>>> -5 % 4
3
Quelqu'un peut-il expliquer ce qui se passe ?
J'ai trouvé un comportement étrange dans Python concernant les nombres négatifs :
>>> -5 % 4
3
Quelqu'un peut-il expliquer ce qui se passe ?
@Deekshant l'a bien expliqué en utilisant la visualisation. Une autre façon de comprendre %(modulo) est de poser une question simple.
Quel est le plus petit nombre le plus proche du dividende qui peut être divisible par le diviseur sur l'axe des X ?
Voyons quelques exemples.
5 % 3
5 est le dividende, 3 est le diviseur. Si vous posez la question ci-dessus, 3 est le plus petit nombre le plus proche qui est divisible par le diviseur. La réponse serait 5 - 3 = 2. Pour un dividende positif, le plus petit nombre le plus proche sera toujours à droite du dividende.
-5 % 3
Le plus petit nombre le plus proche qui est divisible par 3 est -6, donc la réponse est -5 - (-6) = 1.
-5 %4
Le plus petit nombre le plus proche qui est divisible par 4 est -8, donc la réponse est -5 - (-8) = 3.
Python répond à chaque expression modulo avec cette méthode. J'espère que vous comprenez maintenant comment l'expression va s'exécuter.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
35 votes
Ça me semble correct
9 votes
..., -9, -5, -1, 3, 7, ...
3 votes
Duplicata possible de C,Python - comportement différent de l'opération modulo (%)
15 votes
Vous pouvez utiliser
math.fmod
pour obtenir le même comportement qu'en C ou en Java.