Mandar um café pro programador

Pode me ajudar a transformar cafeína em código?

Arredondar Números em Python - Função round()

Em muitas situações como programador Python, você vai precisar arredondar números.

Afinal, por que exibir o número 1.99999 ? Você pode querer mostrar logo 2.
Ou ter que trabalhar com números inteiros (2 ao invés de 1.7)

Neste tutorial, vamos ensinar a usar a função round(), que é bem interessante para arredondar qualquer tipo de número, com a precisão que desejarmos.



Arredondando com a função round()

A utilidade mais básica da função round() é receber um número qualquer e arredondar ele. O mais lógico é arredondar um flutuante para um inteiro.

Basta colocar um número dentro dela: round( numero ) que ela devolve ele arredondado.

Vamos ver alguns exemplos:
Função round()
O código para você testar a round() é:

    numero = float(input('Numero original: '))
    print("Arredondado    :", round(numero))


Mas, por exemplo, o número 1.5 ?
Ele está igual distância de 1 como de 2, qual será o resultado se aplicarmos round(1.5) ?

A resposta é 2.
Então você deve pensar: ah ok, arredonda pra cima.

Então teste round(2.5), o resultado vai ser 3, pra cima, não é?
Errado, é 2 de novo.

"Que bruxaria é essa, Python Progressivo? Tá bugada a função round() ?"
Não!

A função round() tem uma característica especial: se o número flutuante estiver igual distância entre o inteiro de cima e o inteiro de baixo, ela arredonda pro número par mais próximo!

Veja:

Como arredondo um número em Python


Arredondar com casas decimais em Python

Colocando apenas um número dentro da round() ela arredondou e nos devolveu um inteiro.

Mas, e se quisermos arredondar pra ter um valor float?
Por exemplo, quero arredondar 1.9999 pra 2.0 ?
Ou 21.129 pra 21.13 ?

A round() faz isso!
Seu estereótipo é: round( numero, n )
Onde 'numero' é o número que você seja arredondar e 'n' é o número de casas decimais após o ponto flutuante, que deseja arredondar.

Por exemplo:
numero = 1.23456789

round(numero, 1) = 1.2
round(numero, 2) = 1.23
round(numero, 3) = 1.235
round(numero, 4) = 1.2346
round(numero, 5) = 1.23457
round(numero, 6) = 1.234568
round(numero, 7) = 1.2345679
round(numero, 8) = 1.23456789

Precisão cirúrgica, esse Python, não ?



Arredondar pra baixo e pra cima

Muitas vezes queremos sempre arredondar pra baixo, por exemplo:
1.2 -> 1
1.1 -> 1
9.9 -> 9

Outras vezes podemos querer sempre arredondar pra cima:
1.1 -> 2
1.2 -> 2
9.9 -> 10

Pra arredondar pra baixo um número num basta fazer:
round(num - 0.5)

Para arredondar pra cima:
round(num + 0.5)

Mas só funciona se for para números decimais, ok ?

Exercício Resolvido de Python

Escreva um script que peça um número ao usuário.
Em seguida, ele deve descobrir se o número é inteiro ou decimal.

Se for decimal, deve dizer o número arredondado pra cima e arredondado pra baixo.


Primeiro, vamos descobrir se é inteiro ou decimal.
Um número num vai ser inteiro quando ele for igual ao seu número arredondado: num == round(num) retorna True para um inteiro e False para um decimal.

Caso seja decimal, usamos round(num-0.5) pra arredondar pra baixo e round(num+0.5) pra arredondar pra cima.

Nosso código Python fica:

    num = float(input('Numero original: '))

    if num == round(num):
        print("Inteiro")
    else:
        print("Decimal")
        print("Arredondado pra baixo: ", round(num-0.5) )
        print("Arredondado pra cima : ", round(num+0.5) )


5 comentários:

  1. Esse truque do round(num+0.5) é demais. Valeu!

    ResponderExcluir
  2. Opção sem usar round() e mesmo assim conseguindo arredondar o número de ponto flutuante para quantas casas quiser:

    numero = input('Digite um número inteiro ou decimal, caso seja decimal utilize "." e não ",": ')

    if '.' in numero:
    numero_decimal = float(numero)
    print(f'\n{numero_decimal:.2f} é um número decimal!\n')
    else:
    numero_inteiro = int(numero)
    print(f'\n{numero_inteiro} é um numero inteiro!\n')

    ResponderExcluir
  3. Esse truque do round() +0.5 é show, isso evitar o problema de importar bibliotecas de terceiros, muitas vezes da problema na execução.

    ResponderExcluir
  4. Muito obrigada por compartilhar, e sendo tão didático! Me ajudou demais!

    ResponderExcluir

Bora fazer evoluir o ensino da Programação no Brasil ?

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo