Módulo 4 - Variáveis e tipos de dados
Números decimais com float: o ponto no lugar da vírgula
10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Escrever números decimais com ponto, evitando a pegadinha da vírgula brasileira.
- Operar com floats e prever quando o resultado será float.
- Entender por que 0.1 + 0.2 dá 0.30000000000000004 e resolver com round().
- Decidir entre int e float para cada dado de um programa.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Números decimais com float: o ponto no lugar da vírgula.
Os objetivos desta aula. Escrever números decimais com ponto, evitando a pegadinha da vírgula brasileira. Operar com floats e prever quando o resultado será float. Entender por que 0.1 + 0.2 dá 0.30000000000000004 e resolver com round(). Decidir entre int e float para cada dado de um programa.
Veja o essencial, parte por parte.
Ponto, não vírgula: a pegadinha brasileira. float é o tipo dos números com parte decimal, escritos com PONTO: altura = 1.75.
O caso 0.1 + 0.2, explicado sem drama. Abra o Playground e digite print(0.1 + 0.2).
Int ou float: como escolher. Com os dois tipos numéricos na mão, a pergunta natural é qual usar em cada situação.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Ponto, não vírgula: a pegadinha brasileira
No Brasil, um e setenta e cinco se escreve 1,75. Em Python, se escreve 1.75, com ponto, porque a linguagem segue a convenção americana. Essa diferença cultural seria só um detalhe chato se o erro fizesse barulho, mas ele não faz: escrever a vírgula no lugar do ponto NÃO gera mensagem de erro. O Python interpreta a vírgula como separador de valores e cria, sem avisar, um par de números. O programa continua rodando com um dado errado por dentro, que é o pior tipo de bug.
altura_certa = 1.75
print(altura_certa)
altura_errada = 1,75 # a vírgula cria um PAR (tupla), não um decimal
print(altura_errada)
# Saída:
# 1.75
# (1, 75)A segunda saída, (1, 75), é uma tupla de dois inteiros. Nenhum erro na tela, mas o dado está errado.
Aquele (1, 75) entre parênteses é uma tupla, uma estrutura que agrupa valores e que tem aula própria no módulo 11. Por ora, o que importa é reconhecer o sintoma: se um número decimal seu aparecer entre parênteses e com vírgula na saída, a causa é quase certamente uma vírgula digitada no código onde deveria haver ponto. Grave o reflexo agora, porque ele evita horas de confusão: decimal em código Python usa ponto, sempre, mesmo que o resto da sua vida use vírgula.
O caso 0.1 + 0.2, explicado sem drama
Abra o Playground e digite print(0.1 + 0.2). A resposta não é 0.3: é 0.30000000000000004. Esse resultado assusta todo iniciante, vira piada na internet e alimenta a lenda de que o computador erra conta. A explicação é mais interessante que a lenda. O computador guarda números em binário, o sistema de uns e zeros, e nesse sistema o 0.1 é uma dízima infinita, assim como 1 dividido por 3 vira 0,333... infinito no nosso sistema decimal. Como a memória é finita, o computador guarda uma aproximação excelente, mas não exata. Somando duas aproximações, a sobra microscópica aparece lá na décima sétima casa.
print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
print(0.1 + 0.2 == 0.3)
# Saída:
# 0.30000000000000004
# 0.3
# FalseA soma crua, a soma arredondada com round() e a comparação que devolve False por causa da sobra binária.
Isso não é um defeito do Python: é o comportamento do padrão de ponto flutuante usado por praticamente todos os computadores e linguagens do mundo, documentado na própria documentação oficial. E para o dia a dia, o efeito é irrelevante: um erro na décima sétima casa decimal não muda nenhum cálculo de receita, nota de prova ou conta de restaurante. A ferramenta para exibir o valor limpo é a função round(), que recebe o número e a quantidade de casas desejadas. round(0.1 + 0.2, 2) devolve 0.3, pronto para mostrar ao usuário.
Duas consequências práticas para levar. Primeira: ao exibir floats, arredonde com round() para o número de casas que faz sentido, duas para dinheiro, uma para notas. Segunda: evite comparar floats com igualdade exata, como na terceira linha do exemplo, que devolve False; quando as condições chegarem, no módulo 7, você verá jeitos melhores de comparar decimais. Sistemas bancários de verdade vão além e guardam dinheiro em centavos inteiros, exatamente para escapar do arredondamento, um truque que a aula de int já insinuou.
Int ou float: como escolher
Com os dois tipos numéricos na mão, a pergunta natural é qual usar em cada situação. O critério é o dado, não o gosto: o que se conta em unidades inteiras e não admite fração é int; o que se mede e pode ter fração é float. Quantidade de filhos, número de parcelas e itens no estoque são int, porque não existe meio filho nem 2,7 parcelas. Altura, peso, preço e temperatura são float, porque o mundo os fornece com casas decimais.
Casos de int
- idade = 25 (anos completos)
- quantidade = 3 (itens no carrinho)
- ano = 2026 (calendário)
- pontos = 1_450 (placar de jogo)
Casos de float
- altura = 1.75 (metros, com fração)
- preco = 19.90 (reais e centavos)
- temperatura = 36.6 (graus)
- nota = 8.5 (avaliação com meio ponto)
Quando os dois tipos se misturam numa conta, o Python promove o resultado para float: 2 + 1.5 dá 3.5, e até 2 + 1.0 dá 3.0. A regra é simples de lembrar: float contamina a conta. E como a aula de int adiantou, a divisão com / devolve float sempre, mesmo entre inteiros. Nada disso exige decoreba; com os exercícios do módulo, o comportamento vira intuição. Na próxima aula, o elenco de tipos ganha o membro mais enxuto e mais poderoso: o bool, que só conhece dois valores.
Teste rápido
O que acontece ao executar preco = 19,90 em Python?
Perguntas frequentes
- Por que o Python usa ponto decimal se no Brasil usamos vírgula?
- Porque a linguagem segue a convenção internacional de programação, herdada da notação americana. Todo código Python do mundo usa ponto, o que permite compartilhar programas entre países. A vírgula brasileira entra só na EXIBIÇÃO para o usuário, com as ferramentas de formatação do módulo 12.
- O resultado 0.30000000000000004 significa que o Python calcula errado?
- Não. É o comportamento padrão do ponto flutuante binário, usado por todos os computadores e linguagens: 0.1 e 0.2 não têm representação binária exata, e a soma das aproximações deixa uma sobra na décima sétima casa. Para qualquer uso deste curso, o efeito é invisível; round() limpa a exibição.
- Como o round() decide o arredondamento?
- round(numero, casas) arredonda para a quantidade de casas pedida: round(3.14159, 2) devolve 3.14. Sem o segundo argumento, arredonda para o inteiro mais próximo. Nos empates exatos, como round(2.5), o Python arredonda para o par mais próximo, devolvendo 2; é um detalhe curioso que raramente afeta programas iniciantes.
- Devo guardar dinheiro em float?
- Para os exercícios do curso, pode, arredondando a exibição com round(valor, 2). Sistemas financeiros profissionais preferem guardar centavos em int (R$ 19,90 vira 1990) ou usar o módulo decimal do Python, justamente para eliminar as sobras binárias. Saber dessa fronteira já coloca você à frente.
- O que acontece quando misturo int e float na mesma conta?
- O Python converte o resultado para float: 2 + 1.5 dá 3.5, e 2 * 1.0 dá 2.0. A presença de um único float na expressão torna o resultado float. Se precisar do inteiro de volta, a conversão int() existe, e a aula de type() deste módulo mostra como usá-la.
- Como escrevo um float negativo ou menor que um?
- Com o sinal de menos e o ponto, como em saldo = -12.5 e taxa = 0.05. Uma dica de legibilidade: escreva o zero antes do ponto, 0.05 em vez de .05. O Python aceita as duas formas, mas a primeira poupa o leitor de adivinhar.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.