Limitar float a duas casas decimais em Python
Neste artigo você vai aprender a limitar float a duas casas decimais em Python, de uma maneira extremamente simples e fácil
Pra limitar um float a duas casas decimais em Python tu tem três caminhos principais: a f-string f"{n:.2f}" (a partir do Python 3.6), o método "{:.2f}".format(n) e a função round(n, 2). A f-string e o format devolvem uma string já formatada, com o número arredondado e completado com zeros à direita. O round() devolve um número, útil quando o valor vai seguir em outros cálculos. Pra cálculo financeiro preciso, use o módulo decimal com Decimal("valor").quantize(Decimal("0.01")), que foge das imprecisões do ponto flutuante.

Fala programador(a), beleza? Bora aprender mais sobre Python e números com ponto flutuantes, os floats!
Algumas operações matemáticas podem gerar dizimas periódicas ou até mesmo números quebrados com diversas casas decimais
Para apresentação a um cliente final não é interessante exibir um número desta maneira
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Então como podemos resumir ele?
Utilizando a função format, e escolhendo exatamente como o número deve se portar
Veja um exemplo prático:
n = 14.932939294234
n_formatado = "{:.2f}".format(n)
print(n_formatado) # 14.93Veja que resumimos o número em 14.93, como issso foi possível?
Inserimos uma string, que representa um padrão, e é assim que o número será exibido
- .2f = duas casas decimais de um float;
Utilizamos a função format, que recebe o nosso número de float para ser formato
E assim o resultado final é exibido por meio de print
Desta forma podemos formatar qualquer número em qualquer quantidade de casas decimais, basta alterar a string base
Conclusão
Neste artigo você aprendeu a como limitar float a duas casas decimais, utilizando a linguagem Python
Nós implementamos um padrão de string, que é como o número será formatado e aplicamos a função format no decimal
Desta maneira o número agora é exibido, com a quantidade de casas que precisamos para resolver nosso problema
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
Limitar float com f-string (a partir do Python 3.6):
Se tu tá numa versão mais nova do Python, dá pra fazer isso ainda mais limpo, com f-string
A f-string chegou no Python 3.6 e deixa tu formatar o número direto dentro da string, sem chamar o .format() na mão
n = 14.932939294234
print(f"{n:.2f}") # 14.93
A lógica é a mesma do format: o :.2f diz "duas casas decimais de um float"
Só que agora tá tudo numa linha só
muito mais direto né?
O que significa o .2f no Python?
Bora destrinchar esse .2f, que é o coração da formatação
O ponto e o 2 (o .2) dizem quantas casas tu quer depois da vírgula
O f trata o valor como float
Juntando, o .2f arredonda o número pra duas casas e, se faltar casa, completa com zero
Ex: o 5 vira 5.00, e o 14.9329 vira 14.93
E a função round()?
O format e a f-string devolvem uma string já formatada, prontinha pra exibir
Mas e se tu precisa do NÚMERO pra continuar fazendo conta? Aí entra o round()
O round() é uma função embutida do Python: tu passa o número e quantas casas quer
n = 14.932939294234
print(round(n, 2)) # 14.93
A diferença é importante: o round() devolve um número (float), não uma string
Então se tu só vai EXIBIR pro cliente, format ou f-string resolve
Se tu vai continuar calculando, o round() mantém o valor como número
Cuidado com o round() em cálculo de dinheiro:
Se liga nisso, porque já pegou muita gente de surpresa
Olha esse caso:
print(round(2.675, 2)) # 2.67
Ué, não era pra dar 2.68?
Não é bug do Python: é como o float guarda os números em binário
Várias frações decimais não têm representação exata em float, então o valor que fica guardado é levemente diferente de 2.675
Outro detalhe: o round() usa por padrão o arredondamento "round half to even" (o famoso arredondamento bancário), onde o meio vai pro par mais próximo
Pra cálculo financeiro, onde tu não pode errar um centavo, o caminho é o módulo decimal
from decimal import Decimal
valor = Decimal("2.675").quantize(Decimal("0.01"))
print(valor) # 2.68
Com o Decimal tu controla a precisão de verdade e foge das surpresas do ponto flutuante
Na prática, esse tipo de número quebrado quase nunca nasce no teu código: ele vem de fora, de uma API ou de um input que tu não controla, muitas vezes como texto que tu converte pra float antes de formatar. É aí que o arredondamento vira dor de cabeça. Vale abrir o terminal e rodar round(2.675, 2) com os teus próprios olhos: quando aparece 2.67 no lugar de 2.68 pela primeira vez, a ficha cai de que float não é confiável pra dinheiro. Por isso, em qualquer coisa que envolva centavo, o caminho é partir pro Decimal e parar de brigar com o ponto flutuante.
Perguntas frequentes
Como limitar um float a duas casas decimais em Python?
Use f"{n:.2f}" (f-string, a partir do Python 3.6), "{:.2f}".format(n) ou round(n, 2). As duas primeiras geram uma string formatada com arredondamento e zeros à direita; o round() devolve um número.
O que significa o .2f no Python?
No .2f, o .2 indica duas casas decimais depois da vírgula e o f trata o valor como float. O número é arredondado para duas casas e, se tiver menos casas, é completado com zeros (o 5 vira 5.00).
Qual a diferença entre .2f e round() em Python?
O .2f (via f-string ou format) devolve uma string já formatada, com os zeros à direita garantidos. O round() devolve um número (float), então nem sempre mostra as duas casas na exibição. Use .2f pra exibir e round() quando o valor vai continuar em cálculos.
Por que round(2.675, 2) retorna 2.67 em vez de 2.68?
Não é bug do Python. Muitas frações decimais não têm representação exata em float, então o valor guardado é levemente diferente de 2.675. Além disso, o round() usa por padrão o arredondamento bancário (round half to even). Pra precisão em dinheiro, use o módulo decimal com .quantize().
Como arredondar valores monetários com precisão em Python?
Use o módulo decimal: from decimal import Decimal e depois Decimal("2.675").quantize(Decimal("0.01")), que devolve 2.68. Assim você controla a precisão e evita as surpresas do ponto flutuante.
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 […]

Como faço pra não arredondar o valor?
round()
obrigado pelas orientações!
de nada Adélio!
to aprendendo agora como faço pra deixar duas casas decimais só, eu sei que com .format() , da pra deixar e é bem facil, mas com formart no inicio eu ja fico perdido ex:
print(f’O VALOR EM DOLAR QUE VOCÊ TEM É US$:{d}’) >>>> dando o format no começo nao sei onde por o comando (:.2f) já no outro exemplo ali eu sei.
print(‘OVALOR EM DOLAR QUE VOCÊ TEM É US$:{:.2f}’.format(d))
você faz assim:
print(f’O valor em dolar que você tem é US$: {valor:.2f}’)
Com licença, como faço pra dar uma entrada com apenas duas casas decimais?
exemplo de entrada:
raio = float(input(‘Digite o raio do circulo: ‘))
exemplo de saída:
print(f’A área do circulo é {3.14159 * (raio ** 2):.4f}’)
eu preciso que o valor da entrada seja com no máximo duas casas flutuantes.