Oii Matheus, tudo tranquilo?
Essa questão da imprecisão com números decimais não é exclusiva do Python, mas sim da computação e de como ela lida com números de ponto flutuante (números decimais). Isso acontece por conta da aritmética de ponto flutuante.
Aqui na Alura, temos um artigo que explica de forma detalhada e muito didática porque isso acontece:
Além disso, existe uma parte na documentação do Python reservada apenas para explicar esse problema e também já respondi um outro tópico de forma bem detalhada sobre como o Python trabalha com números decimais por baixo dos panos. Vou deixar os links desses dois conteúdos aqui caso queira se aprofundar:
Uma forma de conseguir fazer uma soma precisa utilizando números decimais, é utilizar a função fsum
da biblioteca math
. Essa função terá um comportamento muito semelhante a função sum
com a exceção de que ela corrige imprecisões de números decimais.
Essa função recebe apenas um parâmetro, então para fazer a soma, você deve passar todos os valores que deseja somar em uma tupla/lista, por exemplo. Sendo assim, vamos utilizá-la agora para fazer a mesma soma anterior que você fez:
from math import fsum
dados = {'Jetta Variant': 88078.64, 'Passat': 106161.94, 'Crossfox': 72832.16}
# colocando todos os valores que queremos somar em uma única lista
lista_soma = list(dados.values())
lista_soma.append(1000000)
# somando os valores
fsum(lista_soma)
Resultado:
1267072.74
Assim, percebemos que essa função faz a soma de forma mais precisa :)
Espero que tenha conseguido te ajudar. Qualquer dúvida estou à disposição ^^
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!