Dans mon application, j'ai rencontré le cas suivant et j'ai été surpris par les résultats :
8/-7=-2
(tous deux entiers).
Qu'est-ce que cela signifie ?
Dans mon application, j'ai rencontré le cas suivant et j'ai été surpris par les résultats :
8/-7=-2
(tous deux entiers).
Qu'est-ce que cela signifie ?
Pour les valeurs réelles, c'est-à-dire 8.0/(-7.0)
le résultat est à peu près le suivant -1.143
.
Le résultat de la division entière est arrondi vers le bas, vers la valeur plus négative de -2
. (Ceci est également connu sous le nom de "Floor division")
C'est pourquoi vous obtiendrez les réponses quelque peu perplexes suivantes :
>>> 8/(-7)
-2
>>> 8/7
1
Remarque : Ceci est "corrigé" dans Python 3, où le résultat de 8/(-7)
serait -1.143
. Donc si vous n'avez aucune raison d'utiliser Python 2, vous devriez le mettre à jour ;)
En Python 3, si vous souhaitez toujours effectuer une division entière, vous pouvez utiliser la fonction //
de l'opérateur. Vous obtiendrez la même réponse que 8/(-7)
dans Python 2.
Voici une proposition d'amélioration de Python sur le sujet : PEP 238 -- Changement d'opérateur de division
Python effectue toujours la "division plancher" pour la division des nombres négatifs et la division des nombres positifs.
C'est-à-dire
1/10 = 0
1/-10 = -1
Mais il arrive que nous ayons besoin que 1/-10 soit égal à 0
Je me suis rendu compte qu'il était possible de le faire en utilisant d'abord la division des flottants, puis en convertissant le résultat en int, par exemple.
int(float(1)/-10) = 0
Cela fonctionne bien pour moi, pas besoin d'importer la future division ou de passer à Python 3.
J'espère que cela pourra vous aider~
Pour que Python convertisse automatiquement la division entière en division flottante, vous pouvez utiliser :
from __future__ import division
Aujourd'hui :
8/-7=-1.1428571428571428
Cette fonctionnalité ne figure pas dans la version standard de Python 2 afin de ne pas casser le code existant qui s'appuie sur la division d'entiers.
Cependant, c'est le comportement par défaut de Python 3.
Mais seulement pour Python 2 ? Peut-être mettre à jour votre réponse ( sans "Modifier :", "Mettre à jour :", ou similaire - la réponse doit apparaître comme si elle avait été écrite aujourd'hui) ?
Non, / n'est pas pour la division des entiers, c'est pour la division. Cependant, en Python 2, la division de deux entiers renvoie un entier. Ceci est surprenant et a été corrigé dans Python 3.
@Lennart : Pas vraiment un choc pour les programmeurs C, ni pour quiconque ayant lu le manuel, et pas "faux".
@John : Elle viole les principes fondamentaux de Python et peut donc être qualifiée de "mauvaise" dans le contexte de Python.
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.
0 votes
Dans Python 2 uniquement ? Dans Python 3.8.10 (approx. 2021-11-26), le résultat à l'écran est le suivant
-1.1428571428571428
.