Le module décimal de Python nous aide dans la division avec une précision adéquate et l’arrondi des nombre.
Module décimal Python
Dans cette leçon sur le module décimal en Python, nous verrons comment nous pouvons gérer les nombres décimaux dans nos programmes pour la précision, le formatage et effectuer des calculs également. La précision avec les nombres décimaux est très facile à perdre si les nombres ne sont pas manipulés correctement. Voyons comment le module décimal et ses fonctions disponibles nous aident dans ces domaines.
Travailler avec les nombres décimaux
Les nombres décimaux sont simplement des nombres à virgule flottante avec des points décimaux fixes. Nous devons arrondir correctement les nombres en fonction de nos besoins, sinon les résultats peuvent être inattendus. Le module décimal de Python nous aide à être plus précis avec les nombres décimaux.
Besoin du module décimal
Avant de réellement utiliser ce module, voyons de quelle précision il s’agit et établissons pourquoi nous avons réellement besoin de ce module. Regardons le snippet de code suivant :
division = 72 / 7
print(division)
Voyons la sortie de ce programme : Eh bien, la réponse n’était pas vraiment précise et il n’y avait pas du tout de points décimaux ! Voyons comment nous pouvons corriger cela en utilisant le module décimal.
Utilisation du module décimal
Dans tous les programmes que nous ferons dans ce billet, nous importerons le module décimal dans chacun d’eux :
import decimal
Il se peut que nous n’importions qu’une fonction spécifique de ce module. Cela peut se faire comme suit :
from decimal import Decimal
Commençons à intégrer le module décimal dans quelques programmes.
Exemple de module décimal en Python
Nous commencerons maintenant avec des exemples liés au module.
Correction de la division avec des décimales
Ici, nous allons corriger le programme que nous avons écrit précédemment pour effectuer une division qui aurait dû produire un résultat en virgule flottante. Le programme modifié avec le module décimal ressemblera à ceci :
import decimal
division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)
Examinons la sortie de ce programme : Remarquez, la division est maintenant correcte et précise également, ou peut-être est-elle trop précise?
Contrôle de la précision pour une opération unique
Dans le dernier programme, il y avait 25 décimales dans la réponse maintenant. Mais que se passe-t-il si nous ne voulions que trois chiffres après la virgule des valeurs décimales ? Cela peut également être contrôlé. Ici, nous contrôlerons la précision de la réponse qui ne se reflétera pas dans d’autres opérations de notre programme :
import decimal
with decimal.localcontext() as ctx:
ctx.prec = 3
division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)
again = decimal.Decimal(72) / decimal.Decimal(7)
print(again)
Nous avons effectué l’opération de division deux fois pour illustrer un point. Voyons la sortie de ce programme : Vous avez remarqué quelque chose ? La précision que nous avons définie était valable uniquement pour une seule fois. La prochaine fois que nous avons effectué la division, nous avons obtenu le même résultat.
Contrôle de la précision pour le programme complet
Il est également possible de contrôler la précision globalement dans le programme. Ce n’est pas recommandé tout le temps lorsque vous travaillez avec de nombreux chiffres dans votre programme. Voici un exemple :
import decimal
decimal.getcontext().prec = 3
division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)
again = decimal.Decimal(72) / decimal.Decimal(7)
print(again)
Voyons la sortie de ce programme :
Arrondir les chiffres
Il est possible d’arrondir élégamment les chiffres avec la fonction round(...)
. Essayons :
import decimal
#Peut être arrondi à 13,48 ou 13,49
rounded = round(13.485, 2)
print(rounded)
Voyons la sortie de ce programme : Le nombre dans le programme peut être arrondi à 13,48 ou 13,49. Par défaut, la fonction
round(...)
arrondit vers le bas. Cela peut également être modifié :
import decimal
#Peut être arrondi à 13,48 ou 13,49
rounded = round(13.485, 2)
print(decimal.Decimal(rounded).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP))
Voyons la sortie de ce programme :
Obtenir le contexte décimal de Python
Si vous êtes intéressé à regarder le contexte par défaut défini par défaut pour le module décimal, vous pouvez utiliser le script suivant :
from decimal import *
print(getcontext())
Voyons la sortie de ce programme : C’est tout pour le module décimal de Python, c’est très utile lorsque vous travaillez avec des nombres à virgule flottante.
Source:
https://www.digitalocean.com/community/tutorials/python-decimal-division-round-precision