python - Resultado sorprendente de la división entera negativa




python-3.x division (4)

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

8/-7=-2 (ambos enteros).

¿Qué significa esto?


Cuando ambos valores son enteros al dividir, Python usa la división Piso.


En python, / operator es para división entera. Puedes verlo como una división flotante seguida de una operación de floor .

Por ejemplo,

8/7 == piso (8.0 / 7.0) == 1

8 / -7 == piso (8.0 / -7.0) == -2


Python siempre hace la "división del piso" para división de números negativos y división de números positivos.

Es decir

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

Pero alguna vez necesitamos que 1 / -10 sea 0

Me imagino que se puede hacer utilizando primero la división de flotación y luego arrojar el resultado a int, por ej.

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

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

Espero que te pueda ayudar ~


para que python convierta automáticamente la división de enteros en flotante, puede usar:

from __future__ import division

ahora:

8/-7=-1.1428571428571428

esta característica no está en el estándar python 2 para no romper el código existente que dependía de la división de enteros. Sin embargo, este es el comportamiento predeterminado para python 3.





integer-division