Le module decimal

Adresse : http://docs.python.org/3.3/library/decimal.html

Utilité : calculs sur les nombres décimaux.

Syntaxe : import decimal, ou from decimal import *

Le module decimal permet d’effectuer des calculs exacts sur les nombres décimaux, dans les limites d’une précision fixée par l’utilisateur (mais par défaut égale à 28 chiffres significatifs).

Dans la suite, on suppose que le module decimal a été importé par la commande from decimal import *

L’instruction getcontext().prec = n fixe la précision à n chiffres significatifs.

Les “nombres décimaux” (au sens du module decimal) sont obtenus par application du constructeur Decimal (noter le D majuscule) appliqué à un entier ou à une chaîne de caractères (elle-même une représentation d’un flottant, ce qui permet à l’utilisateur de former des valeurs décimales avec une précision donnée). Le module decimal “surcharge” les opérations arithmétiques usuelles, ce qui permet d’effectuer des calculs exacts sur les décimaux (tant qu’on ne dépasse pas la limite de précision qu’on s’est fixée). Commençons par un exemple simple, pour comprendre à quoi le module decimal peut être utile, et en quoi il s’attaque à des problèmes posés par la représentation binaire habituelle des flottants.

Les “erreurs” ci-dessus ne sont que des conséquences de la représentation en base 2 des flottants : même un nombre aussi inoffensif que 0.1 = 1/(2 ∗ 5) n’est pas représenté de façon exacte en mémoire (contrairement à 0.5 = {2^{-1}}).

Voici ce qu’on obtient, avec les mêmes “calculs”, en important le module decimal :

Tout cela n’est peut-être pas très impressionnant, alors on va augmenter la précision :

Toujours avec une précision de 50 chiffres, voici la valeur décimale de la somme {\sum\limits_{n=1}^{999}\frac{1}{n}} :

Un certain nombre des fonctionnalités du module decimal sont des ajouts récents. Le nombre de fonctions mathématiques qui sont compatibles avec ce module est essentiellement limité au logarithme, à l’exponentielle et à la racine carrée.

Pour plus d’informations, on lira les “recettes” (http://docs.python.org/3.3/library/decimal.html#recipes) qui montrent comment programmer le calcul de π, ex, cos(x), sin(x) avec une précision donnée.

Retour à l’accueil du cours Python/Numpy

Sommaire du chapitre 7

  1. Le module random
  2. Le module decimal
  3. Le module fractions
  4. Le module string
  5. Le module itertools
  6. Les modules operator et functools
  7. Le module time
  8. La classe Counter du module collections
  9. La classe deque du module collections
  10. Le module heapq
  11. Le module bisect
  12. Le module copy
  13. Autres modules et adresses utiles