Resultado sorprendente de la división entera negativa

Resuelto Vivek S asked hace 13 años • 5 respuestas

En mi aplicación encontré lo siguiente y me sorprendieron los resultados:

8/-7=-2(ambos números enteros).

¿Qué quiere decir esto?

Vivek S avatar Apr 04 '11 13:04 Vivek S
Aceptado

Para los valores reales, es decir 8.0/(-7.0), el resultado es aproximadamente -1.143.

Su resultado usando la división de enteros se redondea hacia abajo hacia el valor más negativo de -2. (Esto también se conoce como "División de piso")

Es por eso que obtendrá respuestas algo desconcertantes de:

>>> 8/(-7)
-2
>>> 8/7
1

Nota: Esto está "arreglado" en Python 3, donde el resultado 8/(-7)sería -1.143. Entonces, si no tiene ninguna razón para usar Python 2, debe actualizar. ;)

En Python 3, si aún deseas la división de enteros, puedes usar el //operador. Esto le dará la misma respuesta que 8/(-7)en Python 2.

Aquí hay una propuesta de mejora de Python sobre el tema: PEP 238 - Cambio del operador de división

Chris Cooper avatar Apr 04 '2011 06:04 Chris Cooper

Python siempre realiza la "división básica" tanto para la división de números negativos como para la división de números positivos.

Eso es

1/10 = 0
1/-10 = -1

Pero en algún momento necesitamos que 1/-10 sea 0

Me doy cuenta de que se puede hacer usando primero la división flotante y luego transmitiendo el resultado a int, por ejemplo

int(float(1)/-10) = 0

Eso funciona bien para mí, no es necesario importar la división futura ni actualizar a Python 3.

Espero que pueda ayudarte ~

ZH.Jay avatar Jul 20 '2015 06:07 ZH.Jay