Maison >développement back-end >Tutoriel Python >Pourquoi l'opérateur Modulo de Python produit-il un résultat positif avec des nombres négatifs ?

Pourquoi l'opérateur Modulo de Python produit-il un résultat positif avec des nombres négatifs ?

DDD
DDDoriginal
2024-11-29 20:38:11921parcourir

Why Does Python's Modulo Operator Produce a Positive Result with Negative Numbers?

Comportement de l'opérateur modulo Python avec des nombres négatifs

L'opérateur modulo (%) en Python gère les nombres négatifs différemment qu'en C ou C . Contrairement à ces langages, l'opérateur modulo de Python garantit toujours que le résultat a le même signe que le dénominateur.

Pourquoi -5 % 4 est évalué à 3, pas à -1

Considérons l'expression -5 % 4. Dans ce cas, elle est évaluée à 3 car le calcul se déroule comme suit :

  • (-5) / 4 = -1,25 (division à virgule flottante)
  • Étage(-1,25) = -2 (supprime la partie fractionnaire)
  • (-5) % 4 = (-2 × 4 3) % 4 = 3

Python choisit ce comportement car un résultat non négatif est généralement plus utile. Par exemple, lors du calcul des jours de la semaine à l'aide de la formule (2 - N) % 7, l'opérateur modulo garantit que le résultat se situe dans la plage [0, 6], représentant les jours de la semaine.

Contraste avec le comportement C

En C, si N est supérieur ou égal à 3 dans cette formule, le résultat serait négatif, ce qui n'est pas un nombre de jour valide. Pour obtenir un résultat correct, C nécessite un ajustement manuel en ajoutant 7 au résultat négatif.

Pour plus d'informations sur le comportement de l'opérateur modulo avec des nombres négatifs dans différentes langues, veuillez vous référer à l'article Wikipédia sur le modulo opérateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn