2008-09-22 3 views

Répondre

102

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 à ΤΖΩΤΖΙΟΥ!

+1

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

+0

Cela donne une valeur en virgule flottante, pas une valeur décimale. Voir la réponse de Glyph. – Jim

+0

Vous pouvez également utiliser 'from __future__ import division' dans le code source. –

1

Essayez 4,0/100

1

Un itinéraire simple 4/100,0

ou

4,0/100

3

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 
7

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 
0

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.

+0

Veuillez noter que ce ne sera plus le cas dans Python 3.0 si vous utilisez /. –

23

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.

3

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") 
-4

S'il vous plaît considérer l'exemple suivant

float tot=(float)31/7; 
+3

... ce n'est même pas Python. – Moira

1

Ici, nous avons deux cas possibles ci-dessous

from __future__ import division 

print(4/100) 
print(4//100) 
+0

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 –

-3

division Importation de la future bibliothèque comme ceci:

+1

Veuillez ajouter des détails pour résoudre le problème d'origine, et peut-être les inconvénients de cette approche. – Murphy

+0

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 –

+0

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 –

Questions connexes