¿Hay algún beneficio en usar uno sobre el otro? En Python 2, ambos parecen los mismos resultados:En Python 2, ¿cuál es la diferencia entre '/' y '//' cuando se usa para la división?
>>> 6/3
2
>>> 6//3
2
¿Hay algún beneficio en usar uno sobre el otro? En Python 2, ambos parecen los mismos resultados:En Python 2, ¿cuál es la diferencia entre '/' y '//' cuando se usa para la división?
>>> 6/3
2
>>> 6//3
2
En Python 3.0, 5/2
volverá 2.5
y 5 // 2
volverá 2
. El primero es la división de coma flotante, y el último 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 de números enteros menos que realice un from __future__ import division
, lo que hace Python 2.x para adoptar el comportamiento de 3.0
Independientemente de la futura importación, 5.0 // 2
devolverá 2.0
ya que ese es el resultado de la división del piso de la operación.
se puede encontrar una descripción detallada en https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
//
es la división de piso, que siempre le dará la palabra entera del resultado. La otra es la división "regular".
La doble barra, //
, es la división baja:
>>> 7//3
2
//
implementos de "división de suelo", independientemente de su tipo. Así que 1.0/2.0
dará 0.5
, pero tanto 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
Esta es una buena respuesta. El enlace PEP es útil. Además, considere usar 'math.floor()' o 'math.fmod()' si no está seguro de lo que está sucediendo con los operadores unarios. –
Consulte The Problem with Integer Division por la razón para introducir el operador //
hacer la división entera.
Como todo el mundo ya ha respondido, //
es la división del piso.
Por qué esto es importante es que //
es inequívocamente división de piso, en todas las versiones de Python de 2.2, incluidas las versiones de Python 3.x.
El comportamiento de /
puede cambiar en función de: la opción de línea de comandos
__future__
importación o no (módulo local)-Q old
o -Q new
Ayuda a aclarar para la línea de Python 2.x, /
no es división de piso ni división verdadera. La respuesta aceptada actual no es clara en esto. /
es la división del piso cuando ambos args son int, pero es la división verdadera cuando cualquiera de las dos args son flotantes.
Lo anterior dice mucho más verdad, y es mucho más claro que el segundo párrafo en la respuesta aceptada.
>>> print 5.0/2
2.5
>>> print 5.0 // 2
2.0
No me había dado cuenta de que la división de piso también funciona con números enteros. ¡Gracias! – Mike
La respuesta de la ecuación se redondea al siguiente entero más pequeño o flotante con .0 como punto decimal.
>>>print 5//2
2
>>> print 5.0//2
2.0
>>>print 5//2.0
2.0
>>>print 5.0//2.0
2.0
/ -> punto flotante división
// - división> Floor
deja ver algunos ejemplos en tanto pitón 2.7 y en Python 3.5.
Python 2.7.10 Python vs 3,5
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10 Python vs 3,5
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
Ahora bien, si usted quiere tener (en Python 2.7) misma salida como 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 ya que no hay differece entre la división de suelo tanto 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
**
** /División de Divide operando mano izquierda con la mano operando derecho ex :: 4/2 = 2
División Piso (//) - La división de operandos donde el resultado es el cociente en el que los dígitos después de la punto decimal se eliminan. Pero si uno de los operandos es negativo, el resultado es fijo, es decir, redondeado 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
Ambos/división y // operador de división piso están operando de manera similar
Hacia el infinito y lejos de cero son cosas diferentes. Ejemplo para (-1.2 y 3.4): "suelo" es hacia infinito negativo (-2 y 3), "truncado" es hacia cero (-1 y 3), "saturación" está lejos de cero (-2 y 4), y "techo" es hacia el infinito positivo (-1 y 4). – Phernost
Puedes hacer 'desde __future__ división de importación' en python 2.5. –
Buen punto; Actualicé mi respuesta para decir "2.5 o posterior". –
Ahora no es correcto que "En Python 2.5 o posterior, no hay diferencia para enteros ..." porque 3.0 * es * posterior a 2.5 :) – ShreevatsaR