web-dev-qa-db-fra.com

Division en Python 2.7. et 3.3

Comment puis-je diviser deux nombres dans Python 2.7 et obtenir le résultat avec des nombres décimaux?

Je ne comprends pas pourquoi il y a une différence:

dans Python 3:

>>> 20/15
1.3333333333333333

dans Python 2:

>>> 20/15
1

N'est-ce pas un modulo?

60
Erzsebet

Dans python2.7, l'opérateur / est une division entière si les entrées sont des entiers.

Si vous voulez une division flottante (ce que je préfère toujours), utilisez simplement cette importation spéciale:

from __future__ import division

Voir ici:

>>> 7 / 2
3
>>> from __future__ import division
>>> 7 / 2
3.5
>>>

La division entière est obtenue en utilisant //, et modulo en utilisant %

>>> 7 % 2
1
>>> 7 // 2
3
>>>

EDIT

Comme commenté par user2357112, cette importation doit être effectuée avant toute autre importation normale.

100
bgusach

Dans Python 3, / est une division flottante

Dans Python 2, / est une division entière (en supposant que int entrées)

Dans les deux 2 et 3, // est une division entière

(Pour obtenir la division float dans Python 2, l'un des opérandes doit être un float, soit 20., soit float(20).)

40
mhlester

Dans Python 2.x, veillez à avoir au moins un opérande de votre division dans float. Vous pouvez y parvenir de plusieurs manières, comme dans les exemples suivants:

20. / 15
20 / float(15)
14
woozyking

"/" est une division entière dans python 2 et va donc arrondir à un nombre entier. Si vous souhaitez qu'une virgule soit renvoyée, modifiez simplement le type de l'une des entrées en float:

float(20)/15 #1.33333333

9
Bryan