DEV Community

Johnnatan Sandoval Cardona
Johnnatan Sandoval Cardona

Posted on

El módulo decimal de python

Los lenguajes de programación tienen diversos tipos de datos para manejar información numérica. El tipo entero (int), real (float) y python soporta otros como fracciones y complejos.

Hoy, sin embargo, quiero hablar del tipo decimal. Los float o de coma flotante, tiene varios problemas de precisión que no pueden tolerarse en ciertos tipos de aplicaciones como, por ejemplo, las que tienen que ver con finanzas.

Veamos un caso muy simple:

from decimal import Decimal

1.0 == 0.999999999999999999  # True
Decimal("1.0") == Decimal("0.999999999999999999") # False
Enter fullscreen mode Exit fullscreen mode

Extendiendo sobre la clase decimal, existe el módulo py-money que adiciona a los números una moneda como USD o COP, permitiendo a las aplicaciones que así lo requieren, tener una precisión tan alta como se quiera.

Claro está que no es posible tener una precisión infinita en una computadora. Sin embargo, el módulo decimal se puede ajustar a una precisión tan grande como se necesite:

print(getcontext().prec)  # outpus 28 by default
Enter fullscreen mode Exit fullscreen mode

Usé bastante el módulo decimal y también la librería py-money en un momento en que trabajaba en una aplicación financiera. Es correctamente soportada por django y otros frameworks.

Top comments (0)