Utilizando a função round( ) em Python

4 Dicas/exemplos para utilizar essa built-in function e ter os resultados esperados.

Obs: Caso prefira conteúdo em vídeo, pode pular diretamente para o link:https://youtu.be/zjdiukVG-qE

Assim como diversas outras linguagens, o Python possui algumas funções e tipos embutidos (built-in). Essas funções estão disponíveis o tempo todo para uso sem necessidade de importar alguma biblioteca.

Built-in Function da versão 3.10 do Python:

https://docs.python.org/pt-br/3.10/library/functions.html

Hoje vou falar um pouco sobre a função round( ).

Quase todas as linguagens de programação possuem funções de arredondamento e durante a faculdade nós costumamos utilizá-las bastante, principalmente se você fez ou faz algum curso de engenharia ou economia, por exemplo. Programação é utilizada para resolver problemas numéricos onde a precisão é importante. Afinal, problemas de arredondamento podem derrubar um prédio, uma ponte ou causar prejuízos financeiros no longo prazo, não é verdade?

Vamos consumir o conteúdo direto da fonte, que tal olharmos a definição da função round() lá na documentação do python (3.10)?

Marquei os trechos mais relevantes para analisarmos:

A função round recebe dois parâmetros, number e ndigits. O primeiro comentário relevante é que caso você ainda não saiba, os colchetes representam que o parâmetro ndigits é opcional.

Essa função retorna o valor fornecido no parâmetro number arredondado com a precisão de ndigits após o ponto decimal.

No caso de omitirmos a variável ndigits, a função retorna o inteiro mais próximo.

Os valores são arredondados para o múltiplo de 10 elevado a potência de menos o valor da variável ndigits. Significa que se passarmos o valor de ndigits igual a 2, o número será arredondado para um múltiplo de 10ˆ-2 = 0.01 ;

Também poderemos passar número negativos, utilizando -2, o número será arredondado para um múltiplo de 10ˆ-(-2) -> 10ˆ+2 = 100;

Vou mostrar alguns exemplos com código para entendermos melhor esse funcionamento.

Imagine uma aplicação que controla a venda de pães por kilo.

Para o cenário ao lado teríamos o valor total a cobrar de 4.3146 reais. E uma quantidade hipotética de 10.8 pães se considerarmos que cada pão deveria ter em média 50 gramas.

Ao utilizar a função round( ) sem nenhum parâmetro arredondamos 10.8 pães para 11. E o valor total de 4,3146 reais para 4 reais.

Executamos novamente agora utilizando o valor 2 para o segundo parâmetro e o arredondamento foi para 4.31, utilizando a precisão de 2 casas decimais conforme a documentação da função.

É importante observarmos que a round arredonda para o inteiro mais próximo, portanto 13,46 vira 13 enquanto que 13,52 se torna 14.

Certo, mas o que acontece quando tentamos arredondar um número que está exatamente no meio, como 12.5 ou 13.5?

Irá arredondar para cima ou para baixo?

Vamos ver o próximo exemplo:

Aqui ocorre algo especial, descrito na documentação da função, o round( ) arredonda para o número par mais próximo.

Ou seja, 12.5 arredonda para 12 (para baixo?)

E 16.5 arredonda para 16.


Já o número 19.5, iria arredondar para 20, arredondando para cima.

Quando estamos tentando arredondar um número com várias casas decimais, o mesmo esquema de arredondamento de números pares ocorre.

Observem a variável numero_6, onde esperávamos que o arredondamento fosse para 15.67, mas o resultado foi 15.68 ;

Esse é um detalhe que precisamos ficar atentos.

Além disso, temos alguns casos especiais com número pequenos. Onde os números do tipo float não conseguem representar com precisão.

No momento da operação de arredondamento, o número 2.665 é convertido para algo como 2.665124.... levando o round a arredondar para 2.67 ;

Já o número 2.675 é convertido para 2.6749..... levando o round a transformá-lo em 2.67 também.

Nosso último exemplo é com o preenchimento de ngitis com valores negativos.

Vejam que o arredondamento funciona com os valores múltiplos na base de 10.

Caso tenha restado algum dúvida sobre o funcionamento, mande um direct no instagram https://www.instagram.com/aprendadatascience

Gravei um vídeo também com o conteúdo desse artigo.

Dê um like e nos dê uma força assinando o canal.