Dans ma candidature, j'ai rencontré les éléments suivants et j'ai été surpris par les résultats:
8/-7=-2
(les deux entiers).
que cela veut-il dire?
Pour les valeurs réelles, c'est-à-dire 8.0/(-7.0)
, le résultat est à peu près -1.143
.
Votre résultat utilisant 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 "division de plancher")
C'est pourquoi vous obtiendrez les réponses quelque peu déroutantes de:
>>> 8/(-7)
-2
>>> 8/7
1
Remarque: Ceci est "corrigé" dans Python 3, où le résultat de 8/(-7)
serait être -1.143
. Donc, si vous n'avez aucune raison d'utiliser Python 2, vous devriez mettre à jour.;)
Dans Python 3, si vous voulez toujours une division entière, vous pouvez utiliser l'opérateur //
. Cela vous donnera la même réponse que 8/(-7)
dans = Python 2.
Voici une Python proposition d'amélioration sur le sujet: PEP 238 - Changer l'opérateur de division
Python fait toujours la "division au sol" pour la division des nombres négatifs et la division des nombres positifs.
C'est
1/10 = 0
1/-10 = -1
Mais il nous faut parfois 1/-10 pour être 0
Je pense que cela peut être fait en utilisant d'abord la division flottante, puis en convertissant le résultat en entier, par exemple.
int(float(1)/-10) = 0
Cela fonctionne bien pour moi, pas besoin d'importer la future division ou de mettre à niveau vers Python 3
J'espère que cela peut vous aider ~
pour avoir python convertit automatiquement la division entière en float, vous pouvez utiliser:
from __future__ import division
maintenant:
8/-7=-1.1428571428571428
cette fonctionnalité n'est pas dans la norme python 2 pour ne pas casser le code existant qui reposait sur la division entière. Cependant, c'est le comportement par défaut pour python 3.
Lorsque les deux valeurs sont des nombres entiers lors de la division Python utilise la division Floor.
En python, /
L'opérateur est pour la division entière. Vous pouvez le regarder comme une division flottante suivie d'une opération floor
.
Par exemple,
8/7 == étage (8.0/7.0) == 1
8/-7 == étage (8.0/-7.0) == -2