Par exemple, le symbole de la division standard '/' rounds à zéro:Comment obtenir une valeur décimale lorsque j'utilise l'opérateur de division en Python?
>>> 4/100
0
Cependant, je veux qu'il revienne 0,04. Qu'est-ce que j'utilise?
Par exemple, le symbole de la division standard '/' rounds à zéro:Comment obtenir une valeur décimale lorsque j'utilise l'opérateur de division en Python?
>>> 4/100
0
Cependant, je veux qu'il revienne 0,04. Qu'est-ce que j'utilise?
Il y a trois options:
>>> 4/float(100)
0.04
>>> 4/100.0
0.04
qui est le même comportement que le C, C++, Java, etc., ou
>>> from __future__ import division
>>> 4/100
0.04
Vous pouvez également activer ce comportement en passant l'argument -Qnew
à l'interpréteur Python:
$ python -Qnew
>>> 4/100
0.04
La deuxième option sera la valeur par défaut dans Python 3.0. Si vous voulez avoir l'ancienne division entière, vous devez utiliser l'opérateur //
.
Modifier: ajouté la section sur -Qnew
, grâce à ΤΖΩΤΖΙΟΥ!
Essayez 4,0/100
Un itinéraire simple 4/100,0
ou
4,0/100
Vous devez dire Python d'utiliser des valeurs à virgule flottante, pas des nombres entiers. Vous pouvez le faire en utilisant simplement un point décimal-vous dans les entrées:
>>> 4/100.0
0.040000000000000001
Faire un ou les deux termes d'un nombre à virgule flottante, comme ceci:
4.0/100.0
Vous pouvez également activer la fonction qui sera par défaut dans Python 3.0, « vraie division », qui fait ce que vous voulez . En haut de votre module ou d'un script, faites:
from __future__ import division
Vous ne pouvez pas obtenir une valeur décimale en divisant un nombre entier avec une autre, vous obtenez un entier AllWays cette façon (résultat tronqué à l'entier). Vous devez avoir au moins une valeur pour être un nombre décimal.
Veuillez noter que ce ne sera plus le cas dans Python 3.0 si vous utilisez /. –
D'autres réponses suggèrent comment obtenir une valeur en virgule flottante. Bien que ce soit wlil à ce que vous voulez, il ne sera pas exacte:
>>> 0.4/100.
0.0040000000000000001
Si vous voulez en fait une décimale valeur, faites ceci:
>>> import decimal
>>> decimal.Decimal('4')/decimal.Decimal('100')
Decimal("0.04")
Cela vous donnera un objet cela sait correctement que 4/100 en base 10 est "0,04". Les nombres à virgule flottante sont en réalité en base 2, c'est-à-dire binaires, non décimaux.
Vous pouvez jeter un oeil au paquet decimal de Python, aussi. Cela fournira de bons résultats décimaux.
>>> decimal.Decimal('4')/100
Decimal("0.04")
S'il vous plaît considérer l'exemple suivant
float tot=(float)31/7;
... ce n'est même pas Python. – Moira
Ici, nous avons deux cas possibles ci-dessous
from __future__ import division
print(4/100)
print(4//100)
pour python3 vous n'avez pas besoin que la ligne de division d'importation utilise les instructions print pour python2 vous devez ajouter explicitement la déclaration d'importation –
division Importation de la future bibliothèque comme ceci:
Veuillez ajouter des détails pour résoudre le problème d'origine, et peut-être les inconvénients de cette approche. – Murphy
L'opérateur de division @Murphy n'est pas préinstallé dans l'ancienne version de python. vous n'avez pas besoin de division importer lors de l'utilisation ou l'autre version 3.4,3.5 ou 3.6 –
opérateur de division @Murphy n'est pas pré-installé dans la version de python plus. vous n'avez pas besoin d'importer la division lorsque vous utilisez la version 3.4.3.5 ou 3.6 –
S'il vous plaît ajouter aussi la disponibilité de 'python -Q nouvelle option de ligne de commande pour rendre votre réponse plus complète. – tzot
Cela donne une valeur en virgule flottante, pas une valeur décimale. Voir la réponse de Glyph. – Jim
Vous pouvez également utiliser 'from __future__ import division' dans le code source. –