Módulo `decimal` do Python

Módulo `decimal` do Python

Este artigo explica o módulo decimal do Python.

Você pode aprender o básico sobre cálculos com o módulo decimal, gerenciar a precisão, arredondamento e mais, com exemplos de código.

YouTube Video

Módulo decimal do Python

O módulo decimal do Python fornece operações aritméticas decimais de precisão fixa para evitar erros que ocorrem em operações de ponto flutuante. Ao usar este módulo, resultados mais confiáveis podem ser obtidos em cálculos financeiros ou cálculos que exigem alta precisão. Em situações onde os erros do tipo float são um problema, o módulo decimal é eficaz.

Uso Básico do Módulo decimal

Ao usar o módulo decimal, importe a classe Decimal e manipule os valores como instâncias desta classe. Em seguida, demonstraremos o 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 soma 0.1 e 0.2 com precisão usando a classe Decimal. Executar o mesmo cálculo com o tipo float resulta em valores com erros, enquanto o Decimal evita esses erros.

Controlando a Precisão

O módulo decimal permite controlar facilmente a precisão (número de casas decimais) nos cálculos. A função getcontext() pode ser usada para recuperar o contexto atual e modificar suas configurações.

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
  • Neste exemplo, a precisão é definida para 4 dígitos no cálculo de 1 ÷ 3. Usando Decimal, você pode definir a precisão dos cálculos conforme necessário, permitindo ajustar os resultados de acordo.

Arredondamento

O módulo decimal inclui várias opções para especificar métodos de arredondamento. A seguir estão exemplos de uso de várias opções de arredondamento, como ROUND_UP e 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
  • Aqui, quantize() é usado para arredondar números para cima e para baixo com uma precisão de 2 casas decimais. Isso permite o arredondamento, bem como vários outros tipos de métodos de arredondamento.

Contexto Operacional e Exceções

O módulo decimal também pode lidar com erros e exceções que ocorrem durante as operações. O tratamento personalizado pode ser definido para erros específicos, como divisão por zero ou estouro.

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!")
  • Neste exemplo, a exceção DivisionByZero é capturada quando ocorre uma divisão por zero. No módulo decimal, os erros podem ser controlados e personalizados desta forma.

Resumo

O módulo decimal é extremamente útil em cálculos financeiros ou situações onde alta precisão é necessária para evitar erros de ponto flutuante. Ele suporta uma ampla gama de aplicações, desde cálculos básicos até gerenciamento de precisão, arredondamento e tratamento de exceções. Revise os pontos resumidos abaixo e utilize o módulo decimal de acordo com suas necessidades específicas.

  • A aritmética decimal precisa é possível com a classe Decimal.
  • Você pode ajustar livremente as configurações de precisão e arredondamento.
  • Exceções como divisão por zero podem ser gerenciadas.

Isso permite que você use o módulo decimal para minimizar erros em situações que exigem cálculos numéricos precisos.

Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.

YouTube Video