Respuestas:
En Python 3.x, 5 / 2
volverá 2.5
y 5 // 2
volverá 2
. La primera es la división de coma flotante, y la segunda es la división de piso , a veces también llamada división de enteros .
En Python 2.2 o posterior en la línea 2.x, no hay diferencia para los enteros a menos que ejecute a from __future__ import division
, lo que hace que Python 2.x adopte el comportamiento 3.x.
Independientemente de la importación futura, 5.0 // 2
regresará 2.0
ya que ese es el resultado de la división de piso de la operación.
Puede encontrar una descripción detallada en https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
python -Qnew
. otras opciones de división: -Qold
(predeterminado) -Qwarn
,-Qwarnall
5.0 / 2
regresa 2.5
en todas las versiones, como lo hace 5 / 2.0
: el comportamiento anterior solo es diferente cuando ambos operandos lo son int
.
Para aclarar para la línea Python 2.x, /
no es ni división de piso ni división verdadera. La respuesta aceptada actual no está clara en esto.
/
es la división del piso cuando ambos args son int
, pero es la división verdadera cuando uno o ambos args lo son float
.
Lo anterior dice más verdad y es más claro que el segundo párrafo en la respuesta aceptada.
//
implementa "división de piso", independientemente de su tipo. Entonces
1.0/2.0
dará 0.5
, pero ambos 1/2
, 1//2
y 1.0//2.0
dará 0
.
Ver https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator para más detalles
math.floor()
o math.fmod()
si no está seguro de lo que sucede con los operadores unarios.
/
y //
son operadores binarios (dos operandos, izquierdo y derecho, numerador y denominador)
/ -> División de punto flotante
// -> División de piso
Veamos algunos ejemplos tanto en Python 2.7 como en Python 3.5.
Python 2.7.10 vs. Python 3.5
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10 vs. Python 3.5
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
Ahora, si desea tener (en Python 2.7) la misma salida que en Python 3.5, puede hacer lo siguiente:
Python 2.7.10
from __future__ import division
print (2/3) ----> 0.6666666666666666 #Python 2.7
print (4/2) ----> 2.0 #Python 2.7
Donde como no hay diferencia entre la división de piso en Python 2.7 y en Python 3.5
138.93//3 ---> 46.0 #Python 2.7
138.93//3 ---> 46.0 #Python 3.5
4//3 ---> 1 #Python 2.7
4//3 ---> 1 #Python 3.5
-100 // 33
=> -4 ; 100 // -33
=> -4 ; pero debido a la dirección de redondeo de las funciones del piso, el siguiente podría parecer contra-intuitivo en comparación con el anterior: -100 // -33
=> 3 .
Como todos ya han respondido, //
es la división de piso.
Por qué esto es importante es que //
es una división de piso inequívoca, en todas las versiones de Python desde 2.2, incluidas las versiones de Python 3.x.
El comportamiento de /
puede cambiar dependiendo de:
__future__
Importación activa o no (módulo local)-Q old
o-Q new
>>> print 5.0 / 2
2.5
>>> print 5.0 // 2
2.0
Python 2.7 y otra próxima versión de python:
/
)Divide el operando de la izquierda por el operando de la derecha
Ejemplo: 4 / 2 = 2
//
)La división de operandos donde el resultado es el cociente en el que se eliminan los dígitos después del punto decimal. Pero si uno de los operandos es negativo, el resultado se anula, es decir, se redondea desde cero (hacia el infinito negativo):
Ejemplos: 9//2 = 4
y 9.0//2.0 = 4.0
, -11//3 = -4
,-11.0//3 = -4.0
Tanto la /
división como el //
operador de la división de piso operan de manera similar.
La doble barra //
, es la división del piso:
>>> 7//3
2
//
es la división de piso, siempre le dará el piso entero del resultado. La otra es la división 'regular'.
Las respuestas anteriores son buenas. Quiero agregar otro punto. Hasta algunos valores, ambos dan como resultado el mismo cociente. Después de ese operador de división de piso ( //
) funciona bien pero no el /
operador de división ( ).
- > int(755349677599789174/2)
- > 377674838799894592 #wrong answer
- > 755349677599789174 //2
- > 377674838799894587 #correct answer
5.0//2
da como resultado 2.0
, y no 2
porque el tipo de retorno del valor de retorno del //
operador siga las reglas de coerción de python (conversión de tipo).
Python promueve la conversión de un tipo de datos más bajo (entero) a un tipo de datos más alto (flotante) para evitar la pérdida de datos.
//
es la división de piso, siempre le dará el valor de piso del resultado./
es la división de punto flotante.Los siguientes son la diferencia entre /
y //
; He ejecutado estas operaciones aritméticas en Python 3.7.2
>>> print (11 / 3)
3.6666666666666665
>>> print (11 // 3)
3
>>> print (11.3 / 3)
3.7666666666666667
>>> print (11.3 // 3)
3.0
//
operador debe hacer la división de enteros.