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í:
- División entera negativa resultado sorprendente 5 respuestas
Soy nuevo en Python, y estoy aprendiendo operadores en este momento. Lo entendí:
- El operador
/
se utiliza para lafloating point division
y -
//
parainteger 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