Como solucionar a precisão de decimais em Python?
É comum que o programador que está iniciando em Python tenha problemas ao realizar operações aritméticas entre números decimais.
Por exemplo, ao somar 0.1
com 0.2
, esperamos o resultado como 0.3
, porém não é o que ocorre em Python.
Veja:
resultado = 0.1 + 0.2
print(resultado) # 0.30000000000000004
Podemos ver o mesmo problema em operações de subtração:
resultado = 0.3 - 0.1
print(resultado) # 0.19999999999999998
Isso não ocorre especificamente por culpa do Python. Em outras linguagens de programação, o mesmo pode ocorrer. Na verdade, isso ocorre por causa da forma que os computadores representam um número em ponto flutuante.
Mas, felizmente, podemos solucionar isso de maneira bem simples em Python!
Resolvendo o problema da precisão de números decimais
Para resolver isso, podemos simplesmente utilizar o módulo decimal
.
De acordo com a documentação do módulo decimal, podemos ler o seguinte (tradução livre):
O módulo
decimal
fornece suporte para aritmética de numeros decimais corretamente arredondados. Ele oferece várias vantagens sobre o tipofloat
.
Exemplo:
from decimal import Decimal
soma = Decimal('0.1') + Decimal('0.2')
print(soma) # 0.3
Nota: É importante observar que os números decimais informados em
Decimal
devem ser sempre umastr
com a representação do número. Se utilizassemos0.1
, que é um valorfloat
nativo, ao invés de'0.1'
, o resultado do cálculo seria diferente do esperado.