Comment puis-je obtenir une valeur décimale lors de l’utilisation de l’opérateur de division en Python?

Par exemple, le symbole de division standard ‘/’ arrondit à zéro:

>>> 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 transmettant 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 // .

Edit : ajout d’une section sur -Qnew , grâce à toΩΤΖΙΟΥ !

D’autres réponses suggèrent comment obtenir une valeur en virgule flottante. Bien que cela soit proche de ce que vous voulez, ce ne sera pas exact:

 >>> 0.4/100. 0.0040000000000000001 

Si vous voulez réellement une valeur décimale , procédez comme suit:

 >>> import decimal >>> decimal.Decimal('4') / decimal.Decimal('100') Decimal("0.04") 

Cela vous donnera un object qui 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 en binary et non en décimal.

Faites un ou deux des termes un nombre à virgule flottante, comme ceci:

 4.0/100.0 

Alternativement, activez la fonctionnalité qui sera par défaut dans Python 3.0, «vraie division», qui fait ce que vous voulez. En haut de votre module ou script, faites:

 from __future__ import division 

Vous devez dire à Python d’utiliser des valeurs à virgule flottante, pas des entiers. Vous pouvez le faire simplement en utilisant un point décimal dans les entrées:

 >>> 4/100.0 0.040000000000000001 

Vous pourriez aussi vouloir regarder le paquet décimal de Python. Cela fournira de bons résultats décimaux.

 >>> decimal.Decimal('4')/100 Decimal("0.04") 

Essayez 4.0 / 100

Un itinéraire simple 4 / 100.0

ou

4.0 / 100

Ici, nous avons deux cas possibles donnés ci-dessous

 from __future__ import division print(4/100) print(4//100) 

Vous ne pouvez pas obtenir une valeur décimale en divisant un entier par un autre, vous obtiendrez toujours un entier de cette façon (résultat tronqué en entier). Vous avez besoin d’au moins une valeur pour être un nombre décimal.

Ajoutez la fonction suivante dans votre code avec son rappel.

 # Starting of the function def divide(number_one, number_two, decimal_place = 4): quotient = number_one/number_two remainder = number_one % number_two if remainder != 0: quotient_str = str(quotient) for loop in range(0, decimal_place): if loop == 0: quotient_str += "." surplus_quotient = (remainder * 10) / number_two quotient_str += str(surplus_quotient) remainder = (remainder * 10) % number_two if remainder == 0: break return float(quotient_str) else: return quotient #Ending of the function # Calling back the above function # Structure : divide(, , ) divide(1, 7, 10) # Output : 0.1428571428 # OR divide(1, 7) # Output : 0.1428 

Cette fonction fonctionne sur la base de “Algorithme de division Euclid”. Cette fonction est très utile si vous ne souhaitez importer aucun fichier d’en-tête externe dans votre projet.

Syntex: divise ([divident], [divisor], [décimal (optionnel))

Code: divide(1, 7, 10) OU divide(1, 7)

Commentaire ci-dessous pour toute question.

Importer la division de la future bibliothèque comme ceci:

 from__future__ import division