Original article: What Does // Mean in Python? Operators in Python

En Python, se usa el operador barra doble // para realizar una división. Este operador // divide al primer número por el segundo número y redondea hacia abajo el resultado al entero más cercano.

En este artículo, voy a mostrarte como se usa el operador // y lo compararemos con la división regular para que puedas observar como funciona.

No termina solo ahí, además – aprenderás de un comando matemático en Python que es sinónimo con el operador barra doble //.

Lo que veremos

  • La sintaxis básica del operador//
  • Ejemplos de la división "entera"
  • El operador doble barra // funciona como math.floor()
  • Como funciona el operador doble barra // tras bambalinas
  • Conclusión

La sintaxis básica del operador doble barra //

Para usar el operador doble barra //, se hace de la misma manera que como lo harías con una división regular. La única diferencia es que en lugar de solo ocupar una barra /, usas el doble de barras //:

Primer Número // Segundo Número

Ejemplos de división "entera"

En el ejemplo de a continuación, la división "entera" de 12 en 5 da como resultado 2:

num1 = 12
num2 = 5
num3 = num1 // num2

print("División entera de", num1, "en", num2, "=", num3)
# Salida: División entera de 12 en 5 = 2

En cambio, la división regular de 12 en 5 dará como resultado 2.4. Eso es 2 enteros 4 décimos:

num2 = 5
num3 = num1 / num2

print("División regular de", num1, "en", num2, "=", num3)
# Salida: División regular de 12 en 5 = 2.4

Esto muestra que el operador // aproxima hacia abajo el resultado de una división entre dos números al número entero (o completo) más cercano.

Incluso en el caso de que el número decimal sea 9, el operador // aun así va a continuar aproximando hacia el resultado entero más cercano, pero hacia abajo.

num1 = 29 
num2 = 10 
num3 = num1 / num2
num4 = num1 // num2

print("División regular de", num1, "en", num2, "=", num3)
print("División entera de", num1, "en", num2, "=", num4)

"""
Salida:
División regular de 29 en 10 = 2.9
División entera de 29 en 10 = 2
"""

Y si realizas una división entera con un número negativo, el resultado aún seguirá redondeándose al número entero más pequeño y más cercano.

Para preparar tu mente para el resultado, redondear hacia abajo un número negativo significa alejarse del 0. Por lo tanto, -12 dividido en 5 dará como resultado -3. No te confundas, aunque a primeras luces uno podría decir que el resultado en realidad se está haciendo más grande, la verdad es que se está haciendo más pequeño, ya que mientras más lejano está el número negativo del 0, más pequeña es la cantidad que representa.

num1 = -12
num2 = 5
num3 = num1 // num2

print("División entera de", num1, "en", num2, "=", num3)

# División entera de -12 en 5 = -3

El operador doble barra // funciona igual que math.floor()

En Python, math.floor() redondea hacia abajo un número hacia su entero más cercano, justo como lo hace el operador doble barra //.

Así que, math.floor() es una alternativa al operador // porque tras bambalinas realizan lo mismo.

Acá tienes un ejemplo:

import math

num1 = 12
num2 = 5
num3 = num1 // num2
num4 = math.floor(num1 / num2)

print("División entera de", num1, "en", num2, "=", num3)
print("math.floor de", num1, "dividido en", num2, "=", num4)

"""
Salida:
División entera de 12 en 5 = 2
math.floor de 12 dividido en 5 = 2
"""

Puedes ver que math.floor() realiza lo mismo que el operador //.

Como el operador doble barra // funciona tras bambalinas

Cuando usas el operador // para dividir dos números, el comando que es llamado tras bambalinas es __floordiv__().

También puedes usar este comando __floordiv__() directamente en lugar de colocar el operador //:

num1 = 12
num2 = 5
num3 = num1 // num2
num4 = num1.__floordiv__(num2)

print("División entera de", num1, "en", num2, "=", num3)
print("usando el comando floordiv se obtiene el mismo valor de", num4)

"""
Salida:
División entera de 12 en 5 = 2
usando el comando floordiv se obtiene el mismo valor de 2
"""

Conclusión

En este artículo, has aprendido como se usa el operador doble barra //  y como opera tras bambalinas.

Además, has aprendido dos alternativas al operador //, estas son: math.floor() y __floordiv__().

No te confundas sobre cuál usar. Las tres maneras distintas producirán exactamente el mismo resultado. Te aconsejaría el uso del operador doble barra // ya que netamente escribes menos caracteres para su uso.

Gracias por la lectura.