Como arredondar números em Python [With Examples]

Trabalhando com tipos de dados numéricos em Python? Suba de nível aprendendo as diferentes maneiras de arredondar números em Python.

A maioria dos conjuntos de dados do mundo real contém recursos numéricos e categóricos. Há uma ampla gama de recursos numéricos, desde leituras de sensores até taxas de câmbio, sinais biomédicos e muito mais.

Ao trabalhar com valores numéricos, pode ser necessário arredondar esses valores para uma precisão fixa por motivos como:

  • Garantindo um formato consistente
  • Armazenamento e processamento mais fáceis

Neste tutorial, aprenderemos as diferentes maneiras de arredondar um número para uma precisão específica, arredondar números para cima e para baixo para o número inteiro mais próximo e muito mais.

Vamos começar.

Como arredondar números usando a função round() integrada

O método mais comum para arredondar números em Python é usar o método integrado função round(). Vamos começar aprendendo sua sintaxe:

round(num, ndigits)

Aqui,

  • num é o número que você deseja arredondar
  • ndigits é um parâmetro opcional com valor padrão Nenhum. É o número de casas para arredondar o número. Se ndigits = 2, num é arredondado para duas casas depois da vírgula.
  • A função round() retorna um número arredondado para a precisão de ndigits após o ponto decimal.

Exemplos de uso da função Python round()

Vamos codificar alguns exemplos para entender como funciona a função round().

Como mencionado, ndigits é opcional. Portanto, quando chamamos round() apenas com o número, o número é arredondado para o número inteiro mais próximo.

number = 7.123456
rounded = round(number)  
print(rounded)
# Output: 7

Agora vamos dar alguns exemplos onde especificamos a precisão.

Com ndigits definidos como 2, o número é arredondado para duas casas decimais (décima casa):

number = 7.123456
rounded = round(number, 2)  
print(rounded)
# Output: 7.12

Com ndigits definidos como 3, o número é arredondado para três casas decimais (centésima casa):

number = 7.123456
rounded = round(number, 3)  
print(rounded)
# Output: 7.123

Você também pode usar round() para arredondar números negativos:

number = -3.4
rounded = round(number)
print(rounded) 
# Output: -3

Aqui, a função arredonda -3,4 para -3, o número inteiro mais próximo.

  Decodificando o Comando SQL UPDATE

Arredondando para a casa das dezenas e centenas mais próxima

Você sabia que os ndigits também podem assumir valores negativos?

Sim, você pode chamar a função round() com valores negativos para ndigits. Ao fazer isso, o arredondamento ocorre à esquerda da vírgula, e não à direita.

O que isto significa? Vejamos alguns exemplos.

Quando definimos ndigits como -1, o número é arredondado para a casa das dezenas mais próxima.

number = 7.123456
rounded = round(number, -1)  
print(rounded)
# Output: 10.0

E chamar a função round() com ndigits definidos como -2 arredonda o número 77,123456 para a centena mais próxima, que neste caso é 100,0.

number = 77.123456
rounded = round(number, -2)  
print(rounded)
# Output: 100.0

Até agora, a função round() parece seguir os princípios gerais de arredondamento que aprendemos na matemática escolar. Mas nem sempre é esse o caso.

Há alguns limitações com ponto flutuante números. Portanto, você poderá ver alguns resultados inesperados ao arredondar. Outra advertência interessante é o arredondamento do banqueiro.

O que é o arredondamento do banqueiro?

Inicie um REPL Python e tente o seguinte exemplo:

>>> round(1.5)
2

Vemos que round(1.5) retorna 2 (conforme esperado). Então, o que round(2.5) deveria retornar?

>>> round(2.5)
2

Interessante, sim? Tanto round(1.5) quanto round(2.5) retornam 2. Mas como e por quê?

Internamente, a função round funciona assim: qualquer valor que esteja no meio do caminho entre dois números inteiros é arredondado para o número inteiro par mais próximo. Isso é chamado arredondamento do banqueiro ou a metade redonda para equilibrar a estratégia.

Sabemos que a função round() é suficiente para tarefas simples de arredondamento. Mas, às vezes, pode ser necessário arredondar um número para cima ou para baixo para o número inteiro mais próximo.

Então, como você faz isso? Vamos aprender isso na próxima seção.

Como arredondar números em Python

Para arredondar um número para o número inteiro mais próximo, você pode usar:

  Corrigir o código de erro da Netflix NW-6-503

Usando math.ceil

A função ceil() (ou função teto) funciona da seguinte forma: Ela arredonda um número para o menor inteiro que seja maior que o número.

O trecho a seguir mostra como usar a função ceil() para arredondar o número 3.2:

import math

number = 3.2
rounded_up = math.ceil(number)
print(rounded_up)  
# Output: 4

Usando o Módulo Decimal

Até agora, usamos o tipo de dados float integrado. Mas para certas aplicações em computação científica e finanças, precisamos de uma precisão muito maior. E para isso, o Python vem com o módulo decimal que fornece:

  • Aritmética de ponto flutuante mais precisa
  • Testes de igualdade confiáveis
  • Controle mais preciso sobre o nível de precisão (a precisão padrão é de 28 casas)

Para ver o contexto atual, use getcontext() conforme mostrado:

from decimal import getcontext
current_context = getcontext()
print(current_context)

Você poderá ver o modo atual de precisão e arredondamento, entre outros:

# Output
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, 
capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])

Para arredondar um número, você pode usar quantize() especificando:

  • A precisão (0,0, pois queremos arredondar para o número inteiro mais próximo) e
  • O modo de arredondamento: ROUND_CEILING
from decimal import Decimal, ROUND_CEILING

number = Decimal('3.2')
rounded_up = number.quantize(Decimal('0'), rounding=ROUND_CEILING)
print(rounded_up)  
# Output: 4

Aqui, o número 3,2 foi arredondado para o número inteiro 4 mais próximo.

Como arredondar números em Python

Agora, vamos ver como arredondar números em Python. Semelhante ao processo de arredondamento, podemos usar os módulos matemáticos ou decimais.

Usando math.floor

A função floor() do módulo math funciona assim: ela arredonda um número para o maior número inteiro menor que o número.

Vejamos o seguinte exemplo:

import math

number = 3.8
rounded_down = math.floor(number)
print(rounded_down)  
# Output: 3

Aqui, a função floor() arredonda o número de ponto flutuante de 3,8 para 3.

Usando o Módulo Decimal

Para arredondar um número para baixo, você pode usar quantize() definindo o modo de arredondamento para ROUND_FLOOR.

from decimal import Decimal, ROUND_FLOOR

number = Decimal('3.8')
rounded_down = number.quantize(Decimal('0'), rounding=ROUND_FLOOR)
print(rounded_down)  
# Output: 3

Como visto, 3,8 foi arredondado para 3.

Armadilhas comuns a serem evitadas ao arredondar números

Já vimos que a função round() arredonda de metade para par, o que nem sempre é desejado. Existem algumas outras armadilhas comuns a serem evitadas ao arredondar números em Python:

  • Comparação incorreta de igualdade: números de arredondamento geralmente introduzem erros de arredondamento. Se você tentar realizar uma comparação de igualdade entre um resultado arredondado com outro valor, a verificação de igualdade (quase sempre) falhará devido à variação na precisão. Portanto, tente evitar verificações de igualdade entre números de ponto flutuante e números de ponto flutuante arredondados. Se a comparação for necessária, introduza um limite de tolerância.
  • Perda de informações: você pode querer que certos dados, como leituras de sensores em diferentes registros de data e hora, sejam capturados com alta precisão. Arredondar esses dados para menos casas decimais resulta em perda de informações e análises incorretas.
  • Arredondando resultados intermediários: muitas vezes você terá várias etapas como parte do cálculo. Use precisão consistente em todas as etapas. Além disso, evite arredondar em etapas intermediárias para evitar que os erros de arredondamento se agravem.
  13 melhores aplicativos de aluguel de carros para uso comercial

Melhores práticas para arredondar números em Python

Vamos listar algumas práticas recomendadas a serem seguidas ao arredondar números em Python:

  • Escolha o tipo de dados correto: Escolha entre tipos de dados flutuantes e decimais, dependendo do aplicativo. Se você precisar realizar aritmética de ponto flutuante de alta precisão, escolha o tipo de dados decimal.
  • Use níveis de precisão consistentes: Defina níveis de precisão consistentes para números decimais em todo o programa para evitar erros de arredondamento inesperados.
  • Técnicas de arredondamento de documentos: Em aplicações do mundo real que envolvem dados como moeda e leituras de sensores, é importante ter uma técnica de arredondamento consistente e documentada.

Empacotando

Vamos encerrar o tutorial com uma rápida revisão do que aprendemos:

  • Você pode usar a função round() integrada com esta sintaxe round(num, ndigits). Ao usar a função round(), você deve estar ciente da estratégia de arredondamento do banqueiro. Portanto, ele arredonda os números exatamente entre dois inteiros para o inteiro par mais próximo.
  • Você pode usar as funções ceil() e floor() do módulo matemático para arredondar para cima e para baixo um determinado número para o número inteiro mais próximo, respectivamente.
  • Quando você precisar realizar aritmética de ponto flutuante de alta precisão, use o módulo decimal. Você pode arredondar números com a precisão necessária e a estratégia de arredondamento.
  • Você deve estar ciente das armadilhas comuns com o arredondamento de números em Python. Isso inclui perda de informações por arredondamento, arredondamento de resultados em etapas intermediárias e uso de precisão diferente em diferentes partes do código.
  • As práticas recomendadas incluem a escolha do tipo de dados correto, dependendo do aplicativo, e a documentação de níveis de precisão consistentes.

A seguir, aprenda como realizar a divisão de pisos em Python.

Esse artigo foi útil?

Obrigado pelo seu feedback!