Division entière négative délicate en Python
En travaillant sur une application, le résultat surprenant de la division entière a soulevé des questions. En divisant 8 par -7, le résultat est -2, une valeur entière. Pour comprendre ce phénomène, examinons les subtilités de la division entière.
Division entière contre vraie division
Python 2 utilise la division entière, désignée par "/", ce qui donne un quotient entier. Lors de la division d'entiers négatifs, le quotient est arrondi vers la valeur la plus négative (division plancher). Cela signifie que 8/-7 est tronqué à -2, même si la valeur réelle est plus proche de -1,143.
Python 3 revisité
Pour éviter cette ambiguïté, Python 3 a introduit la vraie division, qui aboutit toujours à une valeur flottante à moins que les deux opérandes ne soient des entiers. Ceci est cohérent avec la division mathématique et élimine le besoin de convertir manuellement les opérandes en flottants. Par conséquent, 8/-7 dans Python 3 serait correctement évalué à -1,143.
Division entière dans Python 3
Si vous avez toujours besoin d'une division entière dans Python 3, le // L'opérateur peut être utilisé. Semblable à la division entière dans Python 2, elle arrondit le quotient vers l'infini négatif.
Contexte historique
Le comportement de la division entière dans Python 2 a été influencé par les langages de programmation historiques et ne reflète pas les normes mathématiques. Python 3 a résolu ce problème en introduisant une véritable division, conforme aux attentes de la plupart des développeurs.
Ressources supplémentaires
Pour plus d'informations sur ce sujet, reportez-vous à l'amélioration Python Proposition 238 (PEP 238) au sujet du changement d'opérateur de division :
[PEP 238 -- Changer l'opérateur de division](https://www.python.org/dev/peps/pep-0238/ )
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!