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
317
demandé sur Steven C. Howell 2008-10-08 21:16:35

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

438
répondu Eli Courtwright 2014-11-13 08:33:15

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.

53
répondu Yichun 2013-03-02 19:41:23

// 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

26
répondu Kena 2014-11-13 08:24:27

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
20
répondu u0b34a0f6ae 2009-11-09 23:55:18

/ --> 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
19
répondu N Randhawa 2016-11-03 11:45:03
>>> print 5.0 / 2
2.5

>>> print 5.0 // 2
2.0
9
répondu Jonas Sciangula Street 2014-03-18 18:23:48

* *

  1. 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

6
répondu Abrar Ahmad 2017-02-05 14:38:04

la double barre, // , est la division de plancher:

>>> 7//3
2
4
répondu Mark Roddy 2013-03-02 19:35:01

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
3
répondu G.Ant 2015-06-03 15:26:43

// est la division de sol, il vous donnera toujours le sol entier du résultat. L'autre est la division "régulière".

2
répondu Adam Bellaire 2008-10-08 17:19:15