Como arredondar números em Python
Arredondamento de valores numéricos em Python
Uma tarefa comum ao realizarmos cálculos em um script Python é a necessidade de arredondar números de ponto flutuante para uma quantidade determinada de casas decimais. Comumente, o arredondamento é efetuado simplesmente descartando-se a parte decimal (fracionária) de um valor numérico, retornando somente a parte inteira. Mas também é possível efetuar o arredondamento preservando um número determinado de casas decimais, se for necessário.
Neste tutorial vou mostrar algumas maneiras de efetuar o arredondamento numérico em Python, usando funções built-in e de bibliotecas da linguagem.
É importante frisar que, ao arredondar um número de ponto flutuante para um valor inteiro, poderá haver perda de precisão, pois o valor presente nas casas decimais é descartado.
Funções de arredondamento de valores em Python
Em Python existem três funções empregadas para efetuar o arredondamento de números de ponto flutuante:
- Função built-in round(): Arredonda para cima ou para baixo
- Método math.floor(): Arredonda para baixo, até o inteiro mais próximo
- Método math.ceil(): Arredonda para cima, até o inteiro mais próximo
Vejamos exemplos de cada método.
Arredondar valores com função round()
Com a função round() podemos arredondar um número de float para int, ou ainda mantê-lo como float, definindo um número de casas decimais desejado.
Exemplos:
1. Arredondar o valor 56,45 para inteiro
round(56.45)
# Retorna: 56
2. Arredondar o valor 45,56 para inteiro
round(45.56)
# Retorna: 46
Como pudemos perceber, valores decimais até 0.5 são arredondados para baixo, e valores decimais a partir de 0.5 são arredondados para cima. Se o número for negativo, o comportamento é o inverso:
3. Arredondar o valor -56,45 para inteiro
round(-56.45)
# Retorna: -56
4. Arredondar o valor -45,56 para inteiro
round(-45.56)
# Retorna: -46
Podemos também arredondar um número com round() até um número especificado de casas decimais. Para isso, devemos fornecer como argumento para a função o número de casas decimais desejadas, logo após o valor a ser arredondado. Veja o exemplo a seguir:
5. Arredondar o valor 45,56 para float com uma casa decimal
round(45.56, 1)
# Retorna: -45.6
Arredondar números em Python com o método math.floor()
Esse método retorna o inteiro mais próximo que seja menor ou igual ao valor do argumento. Em outras palavras, arredonda o número para baixo, independente do valor presente nas casas decimais (floor = chão, em inglês).
Para usar eese método, precisamos importar a biblioteca math no script Python. Veja o exemplo:
6. Arredondar o valor 45,56 para inteiro com math.floor()
import math
math.floor(45.56)
# Retorna: 45
Note que, mesmo o valor decimal sendo superior a 0.5, o número foi arredondado para baixo.
Arredondar valores com método math.ceil()
Esse método retorna o inteiro mais próximo que seja maior ou igual ao valor do argumento. Em outras palavras, arredonda o número para cima, independente do valor presente nas casas decimais (ceil = teto, em inglês).
Para usar esse método, também precisamos importar o módulo math no script Python. Veja o exemplo:
7. Arredondar o valor 56,45 para inteiro com math.ceil()
import math
math.ceil(56,45)
# Retorna: 57
Note que, mesmo o valor decimal sendo menor do que 0.5, o número foi arredondado para cima.
Resumo
Em Python podemos arredondar valores numéricos de ponto flutuante para inteiro de três formas: com a função round(), que arredonda valores para cima ou para baixo dependendo do valor presente nas casas decimais, e com os métodos math.floor() e math.ceil(), que arredondam os valores para baixo e para cima, respectivamente, independente do valor presente na parte decimal do número.
Referências
- Lutz, M. Learning Python. 5ª Ed. (2013). O’Reilly Media.
- Python.org. Built-in Functions. Acesso em 31/05/2021, em https://docs.python.org/3/library/functions.html
Obrigado pelas dicas
Só, por favor, corrija o texto do item 5
Não é possível arredondar para inteiro com uma casa decimal
Se tem casa decimal não é inteiro.
Obrigado pela observação, Victor, texto corrigido!
Abraço!
Olá Fábio! Assisto e acompanho os vídeos e artigos que você produz, com muita gratidão e apreço. Sou um inscrito do seu canal e compartilhador de seus trabalhos. Recentemente iniciei a programação em Python e seus ensinamentos tem me ajudado muito. Sua maneira de explicar serena, simples e clara, lhe qualifica como um excelente formador de conhecimento e por isso, lhe parabenizo e agradeço pela sua dedicação, competência e generosidade. Deus lhe abençoe sempre para você continuar esse brilhante trabalho de ajuda e solidariedade!