Calcul décimaux avec norme IEEE 754/854 en Python 7


Peut-on faire titre plus chiant que celui-là, je vous le demande ?

Toujours est-il que cet article n’interessera que des gens parfaitement chiants, à savoir des scientifiques tatillons, mais je sais qu’il y en a dans notre lectorat alors on va leur jeter un os.

Bref, vous savez que la division par zéro en Python, ça lève une exception :

>>>  1 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-1-b710d87c980c> in <module>()
----> 1 1 / 0
 
ZeroDivisionError: integer division or modulo by zero

Certains esprits chagrins n’aiment pas ce comportement, et voudraient, par exemple, que cela retourne l’infini. Après tout, pourquoi pas.

N’y a-t-il rien qu’on puisse faire pour calmer la rétention anale qui se prépare à cette déconvenue ?

Bien sûr que si, on parle de Python voyons !

>>> from decimal import setcontext,ExtendedContext, Decimal 
>>> setcontext(ExtendedContext)
 
>>> 1 / Decimal(0)
Infinity
>>> -1 / Decimal(0)
-Infinity

Voilà. Si vous êtes une personne normale et manipulez des objets concrets comme des sous, des joujoux, des choux non additionnés avec des carottes ou des hashtags, les réglages par défaut sont parfaits. Mais si vous êtes un fan de scipy, traitant des matrices par bottes de douze, ça peut servir.

Spéciale dédicace à mes amis au CNRS. Bisoux partout !

7 thoughts on “Calcul décimaux avec norme IEEE 754/854 en Python

Leave a comment

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.