Como arredondar um número em Python (função round() e decimal)
Aprenda como arredondar números de ponto flutuante em Python. Entenda o arredondamento do Banker, a precisão decimal personalizada e os flutuadores de formatação para exibição.
Visão geral
A aritmética de ponto flutuante em computadores às vezes pode levar a problemas inesperados de precisão devido à forma como os sistemas binários armazenam decimais (por exemplo, `0,1 + 0,2` avaliado como `0,30000000000000004`). Ao renderizar números aos usuários ou preparar métricas, o arredondamento dos números é um requisito comum. Python oferece várias maneiras de conseguir isso.
A ferramenta principal é a função integrada `round(number, ndigits)`. É necessário um número e uma contagem de precisão opcional. Se `ndigits` for omitido, ele será arredondado para o número inteiro mais próximo. Se `ndigits` for fornecido, ele arredondará para esse número de casas decimais.
Uma propriedade chave da função `round()` do Python é que ela usa o "arredondamento do banqueiro" (arredondado pela metade para par). Quando um número está exatamente no meio do caminho entre dois inteiros (por exemplo, `2,5` ou `3,5`), o Python arredonda para o número *par* mais próximo. Isso significa que `round(2.5)` é `2` e `round(3.5)` é `4`. Embora matematicamente justo em grandes conjuntos de dados para evitar viés ascendente, para cálculos financeiros precisos você deve usar as ferramentas de quantização do módulo `decimal`.
Saída de código e execução
Este script demonstra o arredondamento de pontos flutuantes usando a função round integrada, os exemplos de arredondamento do Banker e o módulo decimal.
from decimal import Decimal, ROUND_HALF_UP
val = 3.14159
# 1. Round to nearest integer
print("Nearest Integer:", round(val))
# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))
# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4
# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3Implementação passo a passo
- Chame a função integrada round(number) para arredondar um ponto flutuante para o número inteiro mais próximo.
- Passe um segundo argumento (por exemplo, round(num, 2)) para especificar o número de casas decimais a serem mantidas.
- Use o módulo decimal com ROUND_HALF_UP para cálculos de arredondamento financeiro rigorosos.
Perguntas frequentes
Por que round(2.5) retorna 2 em vez de 3 em Python?
Python usa o arredondamento de Banker, que arredonda metade dos números para o número inteiro par mais próximo. Isso reduz o viés estatístico (arredondar metade dos números sempre causa um ligeiro desvio ascendente em grandes conjuntos de dados).
Como faço para arredondar um número sempre para cima ou sempre para baixo?
Importe o módulo matemático e use math.ceil(x) para arredondar para o próximo número inteiro ou math.floor(x) para arredondar para baixo para o número inteiro anterior.
Tópicos Relacionados
Aprenda as melhores técnicas de formatação de strings em Python. Compare strings F modernas, format() e formatação percentual com exemplos de código.
Como converter string em int em PythonAprenda como converter uma string em um inteiro em Python usando a função int(). Lide com erros com segurança e converta números de binário, octal ou hexadecimal.
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
Variáveis e tipos de dados Python explicados
Entenda as variáveis do Python e os principais tipos de dados (strings, inteiros, flutuantes, booleanos). Um guia completo para iniciantes sobre atribuição de memória em Python.
Folha de referências dos métodos do dicionário Python
Aprenda métodos de dicionário Python. Guia de referência completo para inserções, recuperações, atualizações e verificações de pares de valores-chave.
Python vs JavaScript: qual linguagem de programação é a melhor?
Uma comparação abrangente entre Python e JavaScript. Explore diferenças de sintaxe, desempenho, casos de uso (backend versus frontend) e exemplos de codificação.