En Python 2, Quelle est la différence entre '/' et '//' lorsqu'il est utilisé pour la division?
Est-il un avantage à l'utilisation de l'un sur l'autre? En Python 2, ils semblent tous les deux retourner les mêmes résultats:
>>> 6/3
2
>>> 6//3
2
10 réponses
en Python 3.0, 5 / 2
retournera 2.5
et 5 // 2
retournera 2
. La première est la division en virgule flottante, et la seconde est la division de plancher, parfois aussi appelée division entière.
en Python 2.2 ou plus tard dans le 2.X line , il n'y a pas de différence pour les entiers à moins que vous n'effectuiez un from __future__ import division
, qui provoque Python 2.x adopter le comportement de 3.0
indépendamment de l'importation future, 5.0 // 2
sera retour 2.0
puisque c'est le résultat de la division de plancher de l'opération.
vous pouvez trouver une description détaillée à https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
cela aide à clarifier pour le Python 2.X line, /
n'est ni floor division ni true division. La réponse actuelle acceptée n'est pas claire à ce sujet. /
est la division de plancher lorsque les deux args sont int, mais est vraie division lorsque l'un ou l'autre des args ou les deux sont flottants.
ce qui précède dit beaucoup plus de vérité, et est beaucoup plus clair que le deuxième paragraphe dans la réponse acceptée.
//
met en œuvre, à l'étage de la division", quel que soit votre type. Si
1.0/2.0
donnera 0.5
, mais 1/2
, 1//2
et 1.0//2.0
donneront 0
.
voir https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator pour plus de détails
comme tout le monde a déjà répondu, //
est la division de plancher.
ce qui est important, c'est que //
est une division au sol sans ambiguïté, dans toutes les versions Python de la version 2.2, y compris Python 3.X versions.
le comportement de /
peut changer selon:
- Active
__future__
à l'importation ou pas (module local) - option en ligne de commande Python, soit
-Q old
ou-Q new
/ --> Division flottante
// --> Étage de la division
Permet de voir quelques exemples en python 2.7 et Python 3.5.
Python 2.7.10 vs. Python 3.5
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10 vs. Python 3.5
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
Maintenant, si vous voulez avoir (en python 2.7) même sortie qu'en python 3.5, vous pouvez faire ce qui suit:
Python 2.7.10
from __future__ import division
print (2/3) ----> 0.6666666666666666 #Python 2.7
print (4/2) ----> 2.0 #Python 2.7
où, comme il n'y a pas de différence entre la division de plancher en python 2.7 et en Python 3.5
138.93//3 ---> 46.0 #Python 2.7
138.93//3 ---> 46.0 #Python 3.5
4//3 ---> 1 #Python 2.7
4//3 ---> 1 #Python 3.5
* *
- Python 2.7 et autre version à venir de python:
** de la Division Divise l'opérande de gauche par l'opérande de droite ex:: 4 / 2 = 2
Étage de Division(//) - La division des opérandes où le résultat est le quotient dans lesquels les chiffres après la virgule sont supprimés. Mais si l'un des opérandes est négatif, le résultat est inondé, c'est-à-dire arrondi zéro (vers l'infini négatif): exemple: 9 / / 2 = 4 et 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0
les opérateurs de la division / / et de la division/ du plancher fonctionnent de la même manière
la double barre, //
, est la division de plancher:
>>> 7//3
2
la réponse de l'équation est arrondie à l'entier plus petit suivant ou flotter avec .0 comme point décimal.
>>>print 5//2
2
>>> print 5.0//2
2.0
>>>print 5//2.0
2.0
>>>print 5.0//2.0
2.0
//
est la division de sol, il vous donnera toujours le sol entier du résultat. L'autre est la division "régulière".