Question

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?

Était-ce utile?

La solution

Il y a trois options:

>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04

qui a le même comportement que 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 d'une section sur -Qnew , grâce à O????? !

Autres conseils

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

>>> 0.4/100.
0.0040000000000000001

Si vous souhaitez 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 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 de votre script, procédez comme suit:

from __future__ import division

Vous pouvez également consulter le package décimal de Python, également. Cela donnera des résultats décimaux intéressants.

>>> 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

Nous avons ici 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 numéro.

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 manière (le résultat est tronqué en entier). Vous devez avoir au moins une valeur sous forme de 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) OU divide (1, 7)

Commentez ci-dessous pour toute question.

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

from__future__ import division
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top