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 tipofloat
resulta em valores com erros, enquanto oDecimal
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
. UsandoDecimal
, 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ódulodecimal
, 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.