• Aucun résultat trouvé

Arithmétique décimale à virgule flottante

Le moduledecimaloffre un type de donnéesDecimaldestiné à faire de l’arithmétique décimale à virgule flottante. Comparée à l’implémentation intégrée des nombres binaires en virgule flottante,float, cette nouvelle classe est particulièrement utile aux applications financières et aux autres usages qui requièrent une représentation décimale exacte, le contrôle de la précision, le contrôle des arrondis, pour satisfaire les prescriptions légales ou réglementaires, le repérage des chiffres décimaux significatifs et aussi les applications dont l’utilisateur espère que les résultats coïncideront avec ceux de calculs faits à la main.

Par exemple, le calcul de 5% du prix d’une communication téléphonique de 70 centimes donne des résultats différents en nombres décimaux à virgule flottante et en nombre binaires à virgules flottante. La différence devient significative si les résultats sont arrondis au centime le plus proche :

>>> from decimal import *

>>> Decimal(’0.70’) * Decimal(’1.05’) Decimal("0.7350")

>>> .70 * 1.05 0.73499999999999999

Le résultat décimal garde un zéro à la fin, impliquant automatiquement un résultat à quatre chiffres après la virgule, ce qui correspond au produit de deux facteurs ayant deux chiffres après la virgule.Decimalreproduit les mathématiques comme on les fait à la main et évite les problèmes qui peuvent survenir lorsque le binaire à virgule flottante ne peut pas représenter exactement les quantités décimales.

>>> Decimal(’1.00’) % Decimal(’.10’) Decimal("0.00") >>> 1.00 % 0.10 0.09999999999999995 >>> sum([Decimal(’0.1’)]*10) == Decimal(’1.0’) True >>> sum([0.1]*10) == 1.0 False

Le moduleDecimalfournit une arithmétique avec autant de précision que nécessaire :

>>> getcontext().prec = 36 >>> Decimal(1) / Decimal(7)

Decimal("0.142857142857142857142857142857142857")

CHAPITRE

DOUZE

Et maintenant ?

La lecture de ce tutoriel aura probablement renforcé votre intérêt dans l’utilisation de Python — vous devriez être impatient d’appliquer Python à la résolution de vos problèmes du monde réel. Où pouvez-vous aller maintenant ? Vous devriez lire, ou au moins feuilleter, la Python Library Reference, qui offre un matériel de référence complet (quoique succinct) sur des types, des fonctions et des modules qui peuvent vous faire économiser beaucoup de temps en écrivant des programmes en Python. La distribution standard de Python inclut énormément de code, en C comme en Python ; il y a des modules pour lire des boîtes aux lettres UNIX, rechercher des documents via HTTP, générer des nombres aléatoires, interpréter des options de ligne de commande, écrire des programmes CGI, comprimer des données, et bien davantage ; parcourir la Library Reference devrait vous donner une idée de ce qui est disponible.

Le site Web principal pour Python esthttp ://www.python.org; vous y trouverez du code, de la documentation, et des liens vers des pages en rapport avec Python dans le Web. Ce site Web dispose de miroirs dans plusieurs endroits du monde, en Europe, au Japon et en Australie ; un miroir peut être plus rapide d’accès que le site principal, suivant votre position géographique. Un site plus informel esthttp ://starship.skyport.net, qui contient nombre de pages personnelles en rapport avec Python ; beaucoup de gens y ont placé des programmes téléchargeables.

Pour des problèmes ou des questions sur Python, vous pouvez poster dans le groupe de discussion

comp.lang.python, ou écrire à la liste de diffusion python-list@cwi.nl. Le groupe et la liste sont en passerelle, donc les messages de l’un passent automatiquement dans l’autre. Il y a entre 35 et 45 messages par jour, avec des questions (et des réponses), des suggestions d’apports nouveaux, et des annonces de nouveaux modules. Avant de poster, soyez sûr d’avoir consulté la liste de Foire Aux Questions (Frequently Asked Questions ou FAQ) située àhttp ://www.python.org/doc/FAQ.html, et d’avoir regardé dans le répertoire ‘Misc/’ de la distribution source de Python. La FAQ répond à plusieurs des questions qui reviennent sans cesse, et peut déjà contenir la solution à votre problème.

ANNEXE

A

Edition d’entrée interactive et substitution

historique

Quelques versions de l’interpréteur Python supportent l’édition de la ligne d’entrée courante et la substitution his- torique, des commodités semblables à celles du shell Korn et du shell GNU Bash. Cela est implémenté en utilisant la librairie GNU Readline, qui supporte l’édition à la vi et à la emacs. Cette librairie a sa propre documentation, que je ne dupliquerai pas ici ; toutefois, les bases peuvent être vite expliquées.

Ce chapitre ne documente pas les capacités d’édition du paquetage PythonWin de Mark Hammond ou l’environ- nement basé sur Tk, IDLE, distribué avec Python. Le rappel d’historique de ligne de commande qui fonctionne dans les fenêtres DOS sous NT et d’autres variantes de DOS et Windows est encore un autre bestiau.

A.1

Edition de ligne

Si elle est supportée, l’édition de ligne d’entrée est active lorsque l’interpréteur affiche un prompt primaire ou secondaire. La ligne courante peut être éditée en utilisant les caractères de contrôle conventionnels d’Emacs. Les plus importants sont : C-A (Control-A) déplace le curseur en début de ligne, C-E en fin de ligne, C-B déplace d’une position vers la gauche, C-F vers la droite. Backspace efface le caractère à gauche du curseur, C-D le caractère à droite. C-K tue (efface) le reste de la ligne à droite du curseur, C-Y rappelle la dernière chaîne tuée. C-tiret-bas défait le dernier changement réalisé ; il peut être répété pour un effet cumulé.

Documents relatifs