python python-3.4 integer-division

División de enteros en Python 3-resultado extraño con número negativo



python-3.4 integer-division (2)

// es el operador para la división de pisos .

Esto significa que una vez que se completa la división, se aplica la función "piso" (el valor recuperado de la división se redondea hacia abajo al entero más cercano, independientemente de si la parte decimal es mayor o menor que .5)

En cuanto a su ejemplo, tenga cuidado de tener en cuenta que para las respuestas negativas, el operador de división del piso todavía estará redondeando hacia abajo (por ejemplo, -5/2 -> -2.5 -> -3).

Esta pregunta ya tiene una respuesta aquí:

Soy nuevo en Python, y estoy aprendiendo operadores en este momento. Lo entendí:

  • El operador / se utiliza para la floating point division y
  • // para integer division .

Ejemplo:

7//3 = 2

Y 7//-3=-3 . ¿Por qué es la respuesta -3 ?

Estoy atrapado aquí.


// no es división entera , sino división en planta :

7/-3 -> -2.33333... 7//-3 -> floor(7/-3) -> floor(-2.33333...) -> -3

PEP 238 sobre el cambio del operador de la división :

El operador // estará disponible para solicitar la división de pisos de manera inequívoca.

Consulte también Por qué los pisos de división de enteros de Python (gracias a @eugene y ) - Básicamente 7//-3 es -7//3 , por lo que desea poder escribir:

-7 = 3 * q + r

Con q un entero (negativo, positivo o nulo) y r un entero tal que 0 <= r < 3 . Esto solo funciona si q = -3 :

-7 = 3 * (-3) + 2