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?
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.
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)
.)
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)
"/" 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