Par exemple, le symbole de division standard '/' arrondit à zéro:
>>> 4 / 100
0
Cependant, je veux qu'il retourne 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 //
.
Edit: ajout d'une section sur -Qnew
, grâce à ΩΤΖΙΟΥ !
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 decimal, procédez comme suit:
>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")
Cela vous donnera un objet qui sait correctement que 4/100 dans base 10 est "0.04". Les nombres à virgule flottante sont en réalité en base 2, c'est-à-dire binaires et non décimaux.
Faites de l’un ou des deux termes un nombre à virgule flottante, comme suit:
4.0/100.0
Sinon, activez la fonctionnalité qui sera la valeur par défaut dans Python 3.0, la "vraie division", qui fait ce que vous voulez. En haut de votre module ou script, faites:
from __future__ import division
Vous voudrez peut-être aussi regarder le fichier decimal package de Python. Cela fournira de bons résultats décimaux.
>>> decimal.Decimal('4')/100
Decimal("0.04")
Vous devez indiquer à Python d'utiliser des valeurs à virgule flottante et non des nombres entiers. Vous pouvez le faire simplement en utilisant vous-même un point décimal dans les entrées:
>>> 4/100.0
0.040000000000000001
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 pouvez également essayer d’ajouter un «.0» à la fin du nombre.
4.0/100.0
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(<divident>, <divisor>, <decimal place(optional)>)
divide(1, 7, 10) # Output : 0.1428571428
# OR
divide(1, 7) # Output : 0.1428
Cette fonction fonctionne sur la base de "l'algorithme de division d'Euclide". Cette fonction est très utile si vous ne souhaitez importer aucun fichier d’en-tête externe dans votre projet.
Syntex: divide ([divident], [diviseur], [décimale (facultatif))
Code: divide(1, 7, 10)
OR divide(1, 7)
Commentaire ci-dessous pour toute question.