Módulo `decimal` de Python
Este artículo explica el módulo decimal
de Python.
Puedes aprender sobre los fundamentos de los cálculos con el módulo decimal
, el manejo de precisión, redondeo y más, junto con ejemplos de código.
YouTube Video
Módulo decimal
de Python
El módulo decimal
de Python ofrece aritmética decimal de precisión fija para evitar los errores que ocurren en las operaciones de punto flotante. Al usar este módulo, se pueden obtener resultados más confiables en cálculos financieros o en cálculos que requieren alta precisión. En situaciones donde los errores del tipo float
son un problema, el módulo decimal
es efectivo.
Uso básico del módulo decimal
Al usar el módulo decimal
, importa la clase Decimal
y maneja los valores como instancias de esta clase. A continuación, demostraremos el uso básico.
1from decimal import Decimal
2
3# Basic usage example of Decimal
4a = Decimal('0.1')
5b = Decimal('0.2')
6result = a + b
7
8print(f"Result: {result}") # Result: 0.3
- Este código suma con precisión 0.1 y 0.2 usando la clase
Decimal
. Realizando el mismo cálculo con el tipofloat
produce valores con errores, mientras queDecimal
evita estos errores.
Controlando la precisión
El módulo decimal
te permite controlar fácilmente la precisión (número de decimales) en los cálculos. La función getcontext()
se puede usar para obtener el contexto actual y modificar su configuración.
1from decimal import Decimal, getcontext
2
3# Set the precision
4getcontext().prec = 4 # Set to 4 decimal places
5
6a = Decimal('1') / Decimal('3')
7print(f"Result with precision 4: {a}") # Result with precision 4: 0.3333
- En este ejemplo, la precisión se establece en 4 dígitos para el cálculo de
1 ÷ 3
. ConDecimal
, puedes establecer la precisión de los cálculos según sea necesario, permitiéndote ajustar los resultados en consecuencia.
Redondeo
El módulo decimal
incluye varias opciones para especificar métodos de redondeo. A continuación se presentan ejemplos de uso de varias opciones de redondeo como ROUND_UP
y ROUND_DOWN
.
1from decimal import Decimal, ROUND_UP, ROUND_DOWN
2
3# Example of rounding a number
4a = Decimal('1.2345')
5
6# Rounding up
7rounded_up = a.quantize(Decimal('0.01'), rounding=ROUND_UP)
8print(f"Rounded Up: {rounded_up}") # Rounded Up: 1.24
9
10# Rounding down
11rounded_down = a.quantize(Decimal('0.01'), rounding=ROUND_DOWN)
12print(f"Rounded Down: {rounded_down}") # Rounded Down: 1.23
- Aquí,
quantize()
se utiliza para redondear números hacia arriba y hacia abajo a una precisión de 2 decimales. Esto permite realizar redondeos así como otros tipos de métodos de redondeo.
Contexto operativo y excepciones
El módulo decimal
también puede manejar errores y excepciones que ocurren durante las operaciones. Se puede definir un manejo personalizado para errores específicos, como la división por cero o el desbordamiento.
1from decimal import Decimal, getcontext, DivisionByZero
2
3# Exception handling
4getcontext().traps[DivisionByZero] = True
5
6try:
7 result = Decimal('1') / Decimal('0')
8except DivisionByZero:
9 print("Division by zero error caught!")
- En este ejemplo, se captura la excepción
DivisionByZero
cuando ocurre una división por cero. En el módulodecimal
, los errores pueden ser controlados y personalizados de esta manera.
Resumen
El módulo decimal
es extremadamente útil en cálculos financieros o situaciones donde se requiere alta precisión para evitar errores de punto flotante. Admite una amplia gama de aplicaciones, desde cálculos básicos hasta la gestión de precisión, redondeo y manejo de excepciones. Revise los puntos resumidos a continuación y utilice el módulo decimal
según sus necesidades específicas.
- Es posible realizar aritmética decimal precisa con la clase
Decimal
. - Puede ajustar libremente la precisión y la configuración de redondeo.
- Se pueden gestionar excepciones como la división por cero.
Esto le permite usar el módulo decimal
para minimizar errores en situaciones que requieren cálculos numéricos precisos.
Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.