Como limitar números decimais em Python?
Neste artigo vamos aprender como limitar números decimais em Python, de uma forma simples com recursos da própria linguagem.
Pra limitar casas decimais em Python o caminho mais direto é a f-string
f"{valor:.2f}" mostra o número com 2 casas (o :.2f define quantas)
Se você quer arredondar o valor de verdade, e não só exibir, usa round(valor, 2), que devolve um número
Também dá pra usar "{:.2f}".format(valor), com o mesmo efeito da f-string
E quando é dinheiro ou você precisa de precisão, o recomendado é o módulo decimal com o método quantize()
Fala programador(a), beleza? Bora aprender mais sobre Python!
Podemos resolver este problema, arredondando o número com a função round, por exemplo
Veja na prática:
numero = round(3.32424, 2) print(numero) // 3.32
Onde o primeiro argumento é o número a ser arredondado e o segundo quantas casas decimais queremos exibir
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Podemos também formatar o número, escolhendo também quantas casas vamos exibir, veja:
numero2 = 4.38991
print("%.2f" % numero2) // 4.39Dessa forma utilizamos uma sintaxe especial do Python para formatar o número da forma que precisamos
Também é possível utilizar o recurso de format, que veio na versão 3 do Python
Tornando ainda mais fácil formatar o número com casa decimal, veja:
teste = 7.98562434234
print('O valor de teste formatado é {:.4f}'.format(teste))Bem parecido com o nosso segundo exemplo, porém este já fico incluso no print
E sua sintaxe também é fácil de entender, podemos decidir o número de casas
Conclusão
Neste artigo vimos como limitar números decimais em Python
Utilizamos a função round que aceita como parâmetros o número em float e também quantas casas queremos que ele seja arredondado
Também vimos uma outra maneira formatando o número, utilizando uma sintaxe especial do Python
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
Adicionar uma seção sobre f-strings, o jeito mais usado hoje pra formatar casa decimal. Exemplo: valor = 3.14159 e print(f"{valor:.2f}") mostrando 3.14. Explicar que o :.2f dentro das chaves define quantas casas aparecem, que é a forma mais limpa e direta e que está disponível a partir do Python 3.6 (PEP 498). Fechar com o gancho de que hoje qualquer versão do Python já tem f-string, já que a série estável atual é a 3.14.
Adicionar um alerta sobre a pegadinha do round. Mostrar que round(2.675, 2) devolve 2.67 e não 2.68 por causa da representação binária de float (não é bug, está na documentação oficial do Python sobre ponto flutuante). E explicar que o round do Python usa arredondamento bancário (round half to even), por isso round(0.5) dá 0 e round(2.5) dá 2, seguindo o IEEE 754.
Apresentar o módulo decimal pra arredondamento decimal preciso, que é o recomendado pela documentação do Python. Mostrar o uso de Decimal com o método quantize() pra fixar o número de casas, citando que existem modos de arredondamento como ROUND_HALF_UP e ROUND_HALF_EVEN. Deixar claro que pra valor de dinheiro esse é o caminho, não o float puro.
Inserir um FAQ em formato de perguntas e respostas cobrindo as buscas reais: como limitar casas decimais, diferença entre round e formatar com f-string, por que round(2.675, 2) dá 2.67 e como arredondar dinheiro.
Sou o Matheus, dou aula de Python faz tempo, e na prática quase ninguém usa round só pra mostrar valor na tela
A gente vai de f-string mesmo, é mais limpo e já sai formatado
O round eu guardo pra quando preciso do número arredondado pra usar depois, não só exibir
E o pulo do gato que sempre mostro pra galera: abre o terminal e roda round(2.675, 2)
Ele devolve 2.67, não 2.68, e aí cai a ficha de que não é bug, é o float sendo float
Quando o número é dinheiro eu nem arrisco, vou direto no módulo decimal, aí o arredondamento sai redondo de verdade
Bora testar?
Perguntas frequentes
Como limitar casas decimais em Python?
Três jeitos rápidos: f-string com f"{valor:.2f}" pra exibir com 2 casas, round(valor, 2) pra arredondar o número de verdade, ou "{:.2f}".format(valor)
O :.2f é onde tu escolhe a quantidade de casas, é só trocar o 2
Qual a diferença entre round() e formatar com f-string?
O round arredonda o valor e devolve um número, então serve quando tu vai usar esse resultado em outra conta
A f-string (e o format) só mudam a forma como o número aparece, o retorno é uma string
Se é só pra mostrar na tela, f-string é mais limpo, se tu precisa do número arredondado pra reusar, vai de round
Por que round(2.675, 2) retorna 2.67 e não 2.68?
Não é bug do Python, é o float sendo float
Muitos decimais não têm representação binária exata, então o 2.675 guardado na memória é um tiquinho menor, e o arredondamento segue esse valor real
A própria documentação do Python explica isso na parte de ponto flutuante
Quando isso te atrapalha, usa o módulo decimal
Por que round(0.5) dá 0 em Python?
Porque o round do Python usa arredondamento bancário (round half to even), que arredonda a metade pro número par mais próximo, seguindo o padrão IEEE 754
Por isso round(0.5) vira 0 e round(2.5) vira 2
Não é erro, é o comportamento padrão da função
Como arredondar valores de dinheiro em Python?
Pra dinheiro, larga o float e vai de módulo decimal
Cria o número com Decimal e usa o método quantize() pra fixar as casas, escolhendo o modo de arredondamento (por exemplo ROUND_HALF_UP)
É o caminho que a documentação do Python recomenda pra ter arredondamento correto
Leia também
Formações
Formação SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
Blog | Mais populares

As diferenças de var, let e const

Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]

ChatGPT: o que é, como usar, dicas e como acessar login
ChatGPT é uma ferramenta de processamento de linguagem natural (NLP) baseada na arquitetura GPT-3.5, desenvolvida pela OpenAI. Sua criação representa um marco significativo no campo […]


Obrigada!
de nada Aline 🙂
simples e direto, obrigado
valeu Kiko, até mais! 🙂
Boa noite, primeiro parabéns pelo blog…
Uma duvida, em casos em que eu queira dividir um valor 100 por 3 mas nao gostaria que ficasse uma dizima infinita. Como fazer para ficar da seguinte forma:
100 / 3 pessoas
p1 = 33
p2 = 33
p3 = 34
Existe como usar o round para isso?
Opa Tiago, você pode converter o número final para inteiro, já tentou?
você faz assim:
divisao = 100 / 3
teste = round(divisao,2)
print(divisao)
espero ter ajudado!
print(teste)
Valeuuu!
de nada Arthur!
Ajudou muito!!! Valeu fessor
valeu Davi!