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.

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
# False

A 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.