2008-10-08 15 views

Respuesta

362

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

+2

Puedes hacer 'desde __future__ división de importación' en python 2.5. –

+0

Buen punto; Actualicé mi respuesta para decir "2.5 o posterior". –

+2

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

0

// es la división de piso, que siempre le dará la palabra entera del resultado. La otra es la división "regular".

3

La doble barra, //, es la división baja:

>>> 7//3 
2 
19

// 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

+0

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. –

19

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

  • activo __future__ importación o no (módulo local)
  • Python, ya sea -Q old o -Q new
40

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.

8
>>> print 5.0/2 
2.5 

>>> print 5.0 // 2 
2.0 
+0

No me había dado cuenta de que la división de piso también funciona con números enteros. ¡Gracias! – Mike

2

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 
13

/ -> 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 
5

**

  1. Python 2.7 y otra próxima versión de pitón:

** /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

+0

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

Cuestiones relacionadas