Módulo `decimal` de Python

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 tipo float produce valores con errores, mientras que Decimal 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. Con Decimal, 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ódulo decimal, 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.

YouTube Video