Veuillez vous référer au problème de la division// entière pour connaître la raison de l'introduction de l' opérateur pour effectuer la division entière.
Sriram
Réponses:
651
Dans Python 3.x, 5 / 2reviendra 2.5et 5 // 2reviendra 2. La première est une division en virgule flottante, et la seconde est une division au sol , parfois aussi appelée division entière .
Dans Python 2.2 ou version ultérieure de la ligne 2.x, il n'y a pas de différence pour les entiers à moins que vous n'effectuiez un from __future__ import division, ce qui fait que Python 2.x adopte le comportement 3.x.
Quelle que soit la future importation, 5.0 // 2elle reviendra, 2.0car c'est le résultat de la division du sol de l'opération.
édité: Vous pouvez "corriger" la division depuis Python 2.2! (Il suffit de lire le PEP lié)
u0b34a0f6ae
2
aussi python -Qnew. d' autres options de division: -Qold(par défaut), -Qwarn,-Qwarnall
John La Rooy
2
A signaler que le 5.0 / 2rendement 2.5dans toutes les versions, tout comme 5 / 2.0- l'ancien comportement ne diffère lorsque les deux opérandes sont int.
Chris
2
Et quand les chiffres sont négatifs? Le comportement est-il le même pour les entiers négatifs?
Aaron Franke
1
@Srinivasu Votre exemple n'est pas utile. Mieux vaut 5 // 2 (qui donne 2) et -5 // 2 (qui donne -3).
Marvin
67
Clarification Python 2.x:
Pour clarifier la ligne Python 2.x, il /n'y a ni division au sol ni division vraie. La réponse actuellement acceptée n'est pas claire à ce sujet.
/est la division du plancher lorsque les deux arguments le sont int, mais est la véritable division lorsque l' un ou les deux arguments le sont float.
Ce qui précède dit plus de vérité et est plus clair que le 2ème paragraphe de la réponse acceptée.
C'est une bonne réponse. Le lien PEP est utile. Envisagez également d'utiliser math.floor()ou math.fmod()si vous n'êtes pas sûr de ce qui se passe avec les opérateurs unaires.
Scott Lowrey
/et //sont des opérateurs binaires (deux opérandes, gauche et droite, numérateur et dénominateur)
iono
28
/ -> Division en virgule flottante
// -> Division étage
Voyons quelques exemples à la fois en python 2.7 et en Python 3.5.
Et quand les chiffres sont négatifs? Le comportement est-il le même pour les entiers négatifs?
Aaron Franke
1
Re: Négatifs - Le comportement est le même, mais rappelez - vous que le résultat est étage, arrondi donc est toujours vers le bas vers plus négatif . Quelques exemples: -100 // 33=> -4 ; 100 // -33=> -4 ; mais en raison de la direction d'arrondi de la fonction plancher, la suivante pourrait sembler contre-intuitive par rapport à la précédente: -100 // -33=> 3 .
Erdős-Bacon
22
Comme tout le monde a déjà répondu, //c'est la division du sol.
Ce qui est important, c'est que la //division de l'étage est sans ambiguïté, dans toutes les versions Python de 2.2, y compris les versions Python 3.x.
Le comportement de /peut changer selon:
__future__Importation active ou non (module local)
Option de ligne de commande Python, soit -Q oldou-Q new
N'avait pas réalisé que la division du sol fonctionne également avec des non-entiers. Merci!
Mike
5
Python 2.7 et une autre version à venir de python:
Division ( /)
Divise l'opérande de gauche par l'opérande de droite
Exemple: 4 / 2 = 2
Division de plancher ( //)
La division des opérandes où le résultat est le quotient dans lequel les chiffres après le point décimal sont supprimés. Mais si l'un des opérandes est négatif, le résultat est plancher, c'est-à-dire arrondi à zéro (vers l'infini négatif):
Vers l'infini et loin de zéro, ce sont des choses différentes. Exemple pour (-1.2 et 3.4): "plancher" est vers l'infini négatif (-2 et 3), "tronquer" est vers zéro (-1 et 3), "saturer" est loin de zéro (-2 et 4), et "plafond" est vers l'infini positif (-1 et 4).
Phernost
4
La double barre oblique,, //est la division au sol:
Les réponses ci-dessus sont bonnes. Je veux ajouter un autre point. Jusqu'à certaines valeurs, les deux donnent le même quotient. Après cet opérateur de division de plancher ( //) fonctionne bien, mais pas l' /opérateur de division ( ).
5.0//2résulte en 2.0, et non 2parce que le type de retour de la valeur de retour de l' //opérateur suit les règles de coercition python (conversion de type).
Python favorise la conversion du type de données inférieur (entier) en type de données supérieur (float) pour éviter la perte de données.
Comment cette réponse ajoute-t-elle quelque chose que les autres idées ne couvrent pas? Ou comment cette réponse est-elle meilleure que les autres réponses?
Rory Daulton
2
Ce qui suit est la sortie d'un programme. Cela n'explique rien.
//
entière pour connaître la raison de l'introduction de l' opérateur pour effectuer la division entière.Réponses:
Dans Python 3.x,
5 / 2
reviendra2.5
et5 // 2
reviendra2
. La première est une division en virgule flottante, et la seconde est une division au sol , parfois aussi appelée division entière .Dans Python 2.2 ou version ultérieure de la ligne 2.x, il n'y a pas de différence pour les entiers à moins que vous n'effectuiez un
from __future__ import division
, ce qui fait que Python 2.x adopte le comportement 3.x.Quelle que soit la future importation,
5.0 // 2
elle reviendra,2.0
car c'est le résultat de la division du sol de l'opération.Vous pouvez trouver une description détaillée sur https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
la source
python -Qnew
. d' autres options de division:-Qold
(par défaut),-Qwarn
,-Qwarnall
5.0 / 2
rendement2.5
dans toutes les versions, tout comme5 / 2.0
- l'ancien comportement ne diffère lorsque les deux opérandes sontint
.Clarification Python 2.x:
Pour clarifier la ligne Python 2.x, il
/
n'y a ni division au sol ni division vraie. La réponse actuellement acceptée n'est pas claire à ce sujet./
est la division du plancher lorsque les deux arguments le sontint
, mais est la véritable division lorsque l' un ou les deux arguments le sontfloat
.Ce qui précède dit plus de vérité et est plus clair que le 2ème paragraphe de la réponse acceptée.
la source
//
implémente la "division du sol", quel que soit votre type. Alors1.0/2.0
donnera0.5
, mais les deux1/2
,1//2
et1.0//2.0
donnera0
.Voir https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator pour plus de détails
la source
math.floor()
oumath.fmod()
si vous n'êtes pas sûr de ce qui se passe avec les opérateurs unaires./
et//
sont des opérateurs binaires (deux opérandes, gauche et droite, numérateur et dénominateur)/ -> Division en virgule flottante
// -> Division étage
Voyons quelques exemples à la fois en python 2.7 et en Python 3.5.
Python 2.7.10 contre Python 3.5
Python 2.7.10 contre Python 3.5
Maintenant, si vous voulez avoir (en python 2.7) la même sortie qu'en python 3.5, vous pouvez faire ce qui suit:
Python 2.7.10
Là où il n'y a pas de différence entre la division Floor en python 2.7 et en Python 3.5
la source
-100 // 33
=> -4 ;100 // -33
=> -4 ; mais en raison de la direction d'arrondi de la fonction plancher, la suivante pourrait sembler contre-intuitive par rapport à la précédente:-100 // -33
=> 3 .Comme tout le monde a déjà répondu,
//
c'est la division du sol.Ce qui est important, c'est que la
//
division de l'étage est sans ambiguïté, dans toutes les versions Python de 2.2, y compris les versions Python 3.x.Le comportement de
/
peut changer selon:__future__
Importation active ou non (module local)-Q old
ou-Q new
la source
la source
Python 2.7 et une autre version à venir de python:
/
)Divise l'opérande de gauche par l'opérande de droite
Exemple:
4 / 2 = 2
//
)La division des opérandes où le résultat est le quotient dans lequel les chiffres après le point décimal sont supprimés. Mais si l'un des opérandes est négatif, le résultat est plancher, c'est-à-dire arrondi à zéro (vers l'infini négatif):
Exemples:
9//2 = 4
et9.0//2.0 = 4.0
,-11//3 = -4
,-11.0//3 = -4.0
L' opérateur de la
/
division et celui de la//
division des sols fonctionnent de manière similaire.la source
La double barre oblique,,
//
est la division au sol:la source
//
est la division du plancher, il vous donnera toujours le plancher entier du résultat. L'autre est la division «régulière».la source
La réponse de l'équation est arrondie au plus petit entier ou flottant suivant avec 0,0 comme point décimal.
la source
Les réponses ci-dessus sont bonnes. Je veux ajouter un autre point. Jusqu'à certaines valeurs, les deux donnent le même quotient. Après cet opérateur de division de plancher (
//
) fonctionne bien, mais pas l'/
opérateur de division ( ).la source
5.0//2
résulte en2.0
, et non2
parce que le type de retour de la valeur de retour de l'//
opérateur suit les règles de coercition python (conversion de type).Python favorise la conversion du type de données inférieur (entier) en type de données supérieur (float) pour éviter la perte de données.
la source
//
est la division du sol, il vous donnera toujours la valeur au sol du résultat./
est la division en virgule flottante.Les suivis sont la différence entre
/
et//
; J'ai exécuté ces opérations arithmétiques dans Python 3.7.2la source