HOWTO · Python

O que // significa em Python

Este tutorial demonstra o que // significa em python

Nesta página

Em Python, // é o operador de divisão com arredondamento para menos infinito: ele divide o operando à esquerda pelo operando à direita e arredonda o quociente em direção ao menos infinito. O tipo do resultado depende dos operandos. Dois inteiros produzem um int; se qualquer operando for um float, o resultado será um float. O operador não apenas descarta o resto e nem sempre retorna um inteiro.

O que significa divisão com arredondamento para menos infinito em Python

A divisão com arredondamento para menos infinito encontra o maior inteiro menor ou igual ao quociente matemático e, em seguida, representa esse valor usando o tipo de resultado determinado pelos operandos. Por exemplo, 10 / 3 é aproximadamente 3.333, então 10 // 3 é 3. Isso difere do truncamento, que descarta a parte fracionária avançando em direção a zero. Essa diferença importa quando o quociente é negativo.

Execute este exemplo:

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

quotient = 10 // 3
print(quotient, type(quotient).__name__)

Como // se comporta com inteiros, floats e números negativos

Com operandos inteiros, // produz um quociente inteiro. Com um operando do tipo float, o quociente arredondado para baixo é um float, mesmo quando seu valor não tem parte fracionária. O sinal do quociente também importa: a divisão com arredondamento para menos infinito avança em direção ao menos infinito, então um quociente negativo não inteiro se torna mais negativo.

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

print(7 // 2)
print(7.0 // 2)
print(-7 // 2)

Para -7 // 2, o quociente matemático é -3.5, e o arredondamento para menos infinito resulta em -4. O truncamento em direção a zero resultaria em -3, que é uma operação diferente. Ao trabalhar com floats, a representação normal de ponto flutuante continua se aplicando; // define a direção do arredondamento, mas não é uma solução geral para as limitações de precisão de ponto flutuante.

Quando usar // em vez de /

Use // quando a tarefa exigir a contagem de unidades completas, como caixas, grupos ou páginas inteiras. Para 25 itens colocados em caixas com capacidade para 6 cada, o quociente indica quantas caixas ficam completas. O operador módulo % fornece a quantidade de itens restantes; juntos, // e % descrevem o quociente e o resto para operandos inteiros.

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

total_items = 25
items_per_box = 6
full_boxes = total_items // items_per_box
leftover_items = total_items % items_per_box
print(full_boxes, leftover_items)

Para a divisão comum, use /: ele retorna o quociente como float, inclusive quando os dois valores de entrada são inteiros. Use // quando o resultado desejado for um quociente arredondado para menos infinito. Não o escolha apenas para fazer um resultado float parecer um inteiro, pois um operando float ainda produz um resultado float.

Perguntas comuns sobre divisão com arredondamento para menos infinito em Python

// sempre retorna um inteiro? Não. Operandos inteiros produzem um int, enquanto um cálculo com um operando float produz um float.

Como ele lida com números negativos? Arredonda o quociente em direção ao menos infinito. Portanto, -7 // 2 é -4, em vez de -3, que seria o resultado do truncamento em direção a zero.

Qual é a diferença entre // e /? O operador / faz a divisão comum e retorna um float. O operador // arredonda o quociente para menos infinito, e o tipo do resultado depende dos operandos.

Quando a divisão com arredondamento para menos infinito é útil? Ela é útil para contar unidades completas, como caixas ou grupos. Se o cálculo exigir um resultado fracionário, use /.