• Home

    Escolha seu Plano

    Carreiras Alura

    Evolua com profundidade técnica, direção clara e aplicação prática.

    Jornadas guiadas do básico ao avançado com checkpoints práticos, desenhadas para quem busca profundidade e protagonismo técnico.

    Iniciante

    Comece do zero com uma trilha clara e progressiva.

    Fundamentos práticos para dar os primeiros passos com segurança e construir uma base sólida.

    Intermediário

    Continue sua evolução com cursos que conectam fundamentos, ferramentas e prática profissional. Ganhe autonomia, e avance para projetos mais completos.

    Avançado

    Aprofunde temas técnicos e estratégicos para enfrentar desafios mais complexos. Explore boas práticas, arquitetura, performance com visão profissional.

    Cursos

    Ver mais cursos de Back-end
    • Pensamento computacional: fundamentos da computação e lógica de programação
    • Lógica de programação: mergulhe em programação com JavaScript
    • DDD: fundamentos do design orientado a domínio
    • ASP.NET: autenticação e autorização em APIs e aplicações web
    • Microsserviços: migração de monólitos e modularização

    Cursos

    Ver mais cursos de Dados
    • Python para Dados: primeiros passos
    • Excel: domine o editor de planilhas
    • Engenharia de Dados: Orquestração de Pipelines com Apache Airflow
    • Power BI Desktop: construindo meu primeiro dashboard
    • Governança e Arquitetura de Dados

    Cursos

    Ver mais cursos de Inteligência Artificial
    • IA: Explorando o Potencial da Inteligência Artificial Generativa
    • Engenharia de Prompt: Criando Prompts Eficazes para IA Generativa
    • Claude para Análise de Dados: prompts, integrações e automações
    • Agno: criando agentes e sistemas multiagente
    • Engenharia de software na era da IA: segurança de aplicações com agentes, MCPs e código gerado por IA

    Cursos

    Ver mais cursos de Front-end
    • HTML e CSS: ambiente, estrutura e estilo
    • React: realizando testes avançados com Jest e Testing Library
    • React: integrando TypeScript em projetos
    • JavaScript: aprendendo a programar
    • React: aplicando arquiteturas de Micro frontends

    Cursos

    Ver mais cursos de DevOps
    • Sistema Operacional Linux: fundamentos e administração prática
    • Containers e Docker: empacotamento, isolamento e gestão
    • Redes: dos conceitos iniciais à criação de uma intranet
    • Linux: gerenciando diretórios, arquivos, permissões e processos
    • Cibersegurança: Fundamentos e práticas integradas

    Cursos

    Ver mais cursos de UX & Design
    • UX Research: mapeando a experiência da pessoa usuária
    • UX/UI Design: Entregando produtos digitais com IA
    • UI Design: Prototipação e animações interativas
    • Figma: Conhecendo o programa
    • Product Design: métricas e ciclo de vida do produto

    Cursos

    Ver mais cursos de Gestão & Negócios
    • Canva: Criação de landing pages e e-mail marketing
    • Agilidade: como ela pode ajudar a criar um time de alta performance
    • Google Analytics 4: Extrair insights e configurar eventos
    • Management 3.0: gerencie o ambiente, não as pessoas
    • Automação de processos com n8n: Inteligência de dados para Marketing

    Cursos

    Ver mais cursos de Mobile
    • React Native: Estilização e Layouts com Flexbox e StyleSheet
    • Flutter: Graphql e suporte offline
    • Android com Gemini: Trabalhando com textos e imagens na IA
    • Dart: trabalhando com orientação a objetos
    • React Native: Dominando Listas com FlatList e ScrollView

    Carreiras

    Ver mais carreiras
    • Especialista em IA
    • Engenharia de IA
    • Ai native software engineering
    • Arquitetura de Soluções com IA
    • AI Product Design
    • Engenharia de Machine Learning
    • Desenvolvimento Front-End React
    • Engenharia de Dados
    • Cloud Security
    • Social Media Marketing
    • Engenharia de Agentes de IA

    Cursos

    • Engenharia de Prompt: Prompts Eficazes para IA Generativa
    • Claude Code: Criando sua Primeira Aplicação
    • Python: Crie sua Primeira Aplicação
    • Git e GitHub: Compartilhando e Colaborando
    • N8N: Fluxos de Trabalho Avançados

    Cursos

    • Copilot Studio: Solução Multiagentes
    • Padrões de API HTTP e Modelagem de APIs
    • Python para Análise de Dados com SQL
    • Docker: Criando e Gerenciando Containers
    • Design com IA: Otimizando o Processo Criativo

    Cursos

    • Model Context Protocol (MCP)
    • Spec-Driven Development: Dev Assistido por Agentes
    • Arquitetura de Sistemas Distribuídos com Java
    • Governança de Modelos e Reprodutibilidade
    • Pentest: Vulnerabilidades em Aplicações Web

    Escolha seu Plano

    Skills & Go

    O Skills & Go é para Tech Leads, Product Managers, estrategistas e early adopters que transformam ideias em soluções de alto impacto. Em cursos ao vivo e 100% online, você domina a nova era da IA em tempo real.

    Aulas ao vivo

    Saiba mais
    • Agentic Engineering: orquestre múltiplos agentes com confiabilidade
    • Building AI Products: transforme ideias em produtos reais com IA
    • AI Data Strategy: transforme dados em decisões estratégicas com IA

    Escolha seu Plano

    Eventos Alura

    Nossos eventos são pensados para quem quer estar à frente das mudanças em tecnologia, IA e inovação. Em experiências presenciais, você acompanha tendências e se conecta com especialistas que estão moldando o futuro.

    Próximos eventos

    • Imersão Engenharia de Software: Dev na Era da IA
    • IA Conference
    • Alura Signals
  • Talent Lab
  • IA

    Escolha seu Plano

    Conteúdos gratuitos

    Explore conteúdos gratuitos para aprender tecnologia no seu ritmo. Encontre artigos com conteúdos técnicos para aprender na prática, notícias para acompanhar as principais tendências do mercado e o Alura Labs, com análises e reflexões de especialistas sobre tecnologia, IA e carreira.

    Conteúdos gratuitos

    • Artigos
    • Notícias
    • Alura Labs
  • Para Empresas
Ver planos
Links principais
  • Planos e Promoções
  • Links complementares do menu mobile
  • Talent lab
  • Inteligência Artificial
  • Pós Graduações
  • Para Empresas
  • Sobre a Alura
  • Grupo Alun
  • Entrar
    • Home
    • Carreiras
    • Skills & Go
    • Talent Lab
    • Inteligência Artificial
    • Pós Graduações
    • Artigos
    • Sobre a Alura
    • Grupo Alun
    LoginContato
    • LinkedIn
    • Instagram
    • YouTube
    1. Página inicial
    2. Back-end
    3. Python: trabalhando com precisão em números decimais

    Python: trabalhando com precisão em números decimais

    6 min6 minutos de leitura

    6 min6 minutos de leitura

    Publicado: 14/01/2019

    Última atualização: 10/03/2026

    1. Pontos Flutuantes e o Problema de Precisão
    2. Trabalhando com precisão com o tipo Decimal
    3. Usando a precisão exata quando precisamos

    Imagine que você está trabalhando em um projeto em Python para automatizar o controle de gastos de uma empresa.

    Para isso, você armazena os valores de ganhos em uma variável chamada ganhos_do_mes e os gastos da empresa em outra variável nomeada gastos_do_mes, e todos esses valores são adicionados em uma função armazena_no_banco_de_dados(), que irá fazer a conexão com o banco de dados do financeiro para salvar essas informações para posterior análise.

    O código, de uma maneira mais sucinta, ficaria desse modo:

    ganhos_do_mes = 99.91 * 5 # Foram vendidos 5 produtos no valor de R$ 99.91
    gastos_do_mes = 110.1 * 3 # Foram comprados 3 produtos no valor de R$ 110.1
    armazena_no_banco_de_dados(ganhos_do_mes, gastos_do_mes) 
    

    Entretanto, ao realizar a análise de gastos no banco de dados, o time do financeiro informou que houve uma divergência entre os valores retornados no projeto acima e os valores reais de entrada e saída de dinheiro, levantando a possibilidade de um problema no código. Ao analisar os resultados do projeto, obtemos:

    ganhos_do_mes = 499.54999999999995
    gastos_do_mes = 330.29999999999995
    

    Enquanto os resultados reais, feitos por uma calculadora pelo financeiro, retornam os valores 499.55 e 330.30, respectivamente. Em aplicações financeiras, é comum arredondar valores monetários para duas casas decimais, pois isso simplifica os cálculos e fornece resultados mais fáceis de entender.

    Mas e aí, por que o projeto em Python retornou números tão longos ao invés de arredondá-los como fez a calculadora comum?

    Famoso gif da Nazaré Tedesco olhando confusa enquanto várias equações matemáticas aparecem na tela. No gif, o rosto de uma mulher branca e loira com olhos pretos observa vários lados, parecendo confusa. Várias equações matemáticas e gráficos aparecem sobrepostos em cor branca, surgindo e desaparecendo de vários pontos.

    Pontos Flutuantes e o Problema de Precisão

    Toda essa questão dos resultados que recebemos em Python é algo que vem da computação e de como ela lida com números de ponto flutuante (o conhecido float).

    No mais baixo nível, computadores funcionam com a diferença de dois estados elétricos - baixa e alta voltagem, ligado e desligado, verdadeiro e falso. Daí temos o binário, o famoso 0 e 1, e é por conta desse sistema que os computadores conseguem ser tão rápidos com algumas coisas.

    Entretanto, utilizando o formato binário para os números de ponto flutuante, os computadores não conseguem representar com precisão exata algumas frações (como 0.98 e 0.1). Desse modo, esses números são automaticamente arredondados para o mais próximo que se encaixe na possibilidade do binário, o que resulta em um pequeno erro de precisão.

    No geral, esse erro é muito pequeno para ser considerado relevante, mas há situações em que não podemos desconsiderá-lo, como foi dado no exemplo anterior.

    Nesse caso, como estamos lidando com dinheiro, precisamos de uma precisão maior no arredondamento do número real. Outros casos em que seria importante ter valores mais arredondados incluem o uso de sistemas com recursos limitados, como em sistemas embarcados, visando economizar recursos de CPU e memória. Além disso, ao exibir resultados em gráficos e relatórios, o arredondamento é interessante para proporcionar legibilidade e evitar confusões.

    No geral, se estivéssemos trabalhando com simulações científicas, contabilidade de impostos, entre outros casos que necessitam utilizar valores mais completos em suas operações, o Python, assim como outras linguagens, não arredondaria os números, o que não seria um problema. Ou seja, a decisão de arredondar ou não arredondar depende das necessidades específicas da aplicação e do contexto.

    Contudo, como na situação apresentada, precisamos ter valores mais precisos, em até duas casas decimais. Como podemos alterar nosso código para fazer isso?

    Banner do Guia Tático Alura sobre carreira em tecnologia, destacando o mapa da carreira tech. A imagem convida a explorar diferentes caminhos profissionais, comparar possibilidades e encontrar a próxima fase da carreira na área de tecnologia, com chamada “Explore o mapa”.

    Trabalhando com precisão com o tipo Decimal

    Por conta dessa necessidade recorrente de lidarmos com números não-inteiros exatos, a maioria das linguagens de programação nos disponibiliza tipos específicos para lidar com isso.

    No caso do Java, por exemplo, temos o BigDecimal. No Python, temos todo o módulo decimal e, mais especificamente, o tipo Decimal. Importando-o, seu uso é direto:

    from decimal import Decimal
    ganhos_do_mes = Decimal('99.91') * 5
    print(ganhos_do_mes)
    gastos_do_mes = Decimal('110.1') * 3
    print(gastos_do_mes)
    

    Em que temos o resultado:

    ganhos_do_mes = 499.55
    gastos_do_mes = 330.30
    

    Exatamente como foi encontrado na calculadora! A biblioteca decimal oferece números de ponto flutuante com precisão arbitrária.

    Isso significa que você pode especificar a precisão desejada e realizar cálculos com um número específico de casas decimais e também pode ter controle completo sobre o número de casas decimais a serem mantidas.

    Isso é útil em cenários onde a precisão precisa ser estritamente controlada, visto que não introduz erros de arredondamento, desde que você configure a precisão apropriada.

    E se no código utilizado não for necessário uma precisão extrema?

    Função Round

    Caso seu projeto não precise trabalhar com uma precisão tão exata, a função round() pode ser uma outra opção apropriada para você, visto que ela é usada para arredondar números de ponto flutuante para um número específico de casas decimais. Ao contrário da biblioteca decimal, ela não oferece precisão arbitrária e nem arredonda o número fornecido de acordo com as regras de arredondamento padrão.

    Essa é uma opção para fins de exibição ou para simplificar cálculos, na qual não seria um problema ter possíveis erros de arredondamento dos valores utilizados. Se optássemos por essa abordagem no código anterior, ela ficaria do seguinte modo:

    ganhos_do_mes = round(99.91 * 5, 2)  # Arredonda para 2 casas decimais
    gastos_do_mes = round(110.1 * 3, 2)   # Arredonda para 2 casas decimais
    armazena_no_banco_de_dados(ganhos_do_mes, gastos_do_mes)
    

    Usando a precisão exata quando precisamos

    Trabalhar com precisão em Python com números de ponto flutuante pode ser desafiador devido à natureza aproximada desse tipo de dado. A maioria das linguagens de programação tem algum tipo numérico exato para evitar esse problema. No caso do Python, esse tipo é o Decimal, com precisão arbitrária. Com ele, nossos cálculos ganharam a precisão necessária e acabamos com todo o problema inicial.

    Uma intuição natural depois de se conhecer os tipos numéricos exatos nas linguagens de programação, como o Decimal, é querer usá-los para tudo. Apesar disso, é importante sempre analisarmos se vale a pena, pois tipos exatos demandam mais tempo de processamento. Caso não tenha a necessidade de uma implementação tão precisa, é possível usar uma função embutida do Python, o round().

    Normalmente, um pequeno erro na 10ª casa decimal de um número é irrelevante, e a precisão exata desnecessária. Por isso, temos sempre que analisar o contexto de nosso próprio programa antes de aplicar uma decisão.

    Que tal dar um mergulho ainda mais profundo? Deixamos aqui algumas referências que serão de grande ajuda nos seus estudos de Python:

    • Artigo: O que é Python? História, Sintaxe e um Guia para iniciar na Linguagem
    • Artigo: Pycharm ou VSCode: qual ferramenta escolher para programar em Python?
    • Artigo: Ambientes virtuais em Python
    • Artigo: Django ou Flask: características, semelhanças e diferenças
    Banner do Guia Tático Alura sobre carreira em tecnologia, destacando o mapa da carreira tech. A imagem convida a explorar diferentes caminhos profissionais, comparar possibilidades e encontrar a próxima fase da carreira na área de tecnologia, com chamada “Explore o mapa”.

    Avalie este artigo

    • Foto de yan-orestes

      Autor(a)

      yan-orestes

    Explore por tópico

    • Back-end
    • Dados
    • DevOps
    • Front-end
    • Gestão & Negócios
    • Institucionais
    • Inteligência Artificial
    • Mobile
    • UX & Design

    Leia também

    • 24/10/2017

      Wi-Fi: explorando padrões, canais, diferenças e práticas de segurança

      Ler mais
    • Alura
      23/11/2015

      Converter int para String em Java

      Ler mais
    • 17/07/2018

      Algumas dicas importantes sobre políticas de senha

      Ler mais
    Ver mais conteúdos

    Inscreva-se em nossa Newsletter

    Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.

    Institucional

    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status
    Institucional
    • Sobre nós
    • Trabalhe Conosco
    • Para Empresas
    • Para Escolas
    • Política de Privacidade
    • Compromisso de Integridade
    • Termos de Uso
    • Canal de Ética
    • Código de Ética
    • Fale Conosco
    • Documentos Institucionais
    • Status

    A Alura

    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes
    A Alura
    • Como Funciona
    • Inteligência Artificial
    • Plataforma
    • Depoimentos
    • Instrutores(as)
    • Dev em <T>
    • Luri, a Inteligência Artificial da Alura
    • IA Conference
    • Cursos Imersivos
    • Perguntas Frequentes

    Conteúdos

    • Alura Cases
    • Imersão Engenharia de Software: Dev na Era da IA
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Conteúdos
    • Alura Cases
    • Imersão Engenharia de Software: Dev na Era da IA
    • Artigos
    • Podcasts
    • Artigos de educação corporativa
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Uma Empresa do GrupoLogo Grupo Alun

    Outras empresas do Grupo Alun

    • FIAP
    • STARTSE
    • PM3
    • LUMINA

    Ao submeter seu e-mail, você concorda com a política de privacidade da Alura.

    Redes Sociais & Apps

    instagram
    youtube
    tiktok
    x
    appStore
    googlePlay
    Alura