Tiene que ver con la versión de python que utiliza. Básicamente adopta el comportamiento C: si divide dos enteros, los resultados se redondearán a un entero. También tenga en cuenta que Python realiza las operaciones de izquierda a derecha, lo que desempeña un papel cuando encasilla.
Ejemplo: Dado que esta es una pregunta que siempre aparece en mi cabeza cuando estoy haciendo operaciones aritméticas (debería convertir a flotar y qué número), se presenta un ejemplo de este aspecto:
>>> a = 1/2/3/4/5/4/3
>>> a
0
Cuando dividimos números enteros, no sorprende que se redondee más bajo.
>>> a = 1/2/3/4/5/4/float(3)
>>> a
0.0
Si Typecast el último número entero de flotar, todavía podemos conseguir cero, ya que en el momento en nuestro número se divide por el flotador ya se ha convertido 0 a causa de la división entera.
>>> a = 1/2/3/float(4)/5/4/3
>>> a
0.0
Mismo escenario que el anterior pero cambiando el tipo de flotador un poco más cerca del lado izquierdo.
>>> a = float(1)/2/3/4/5/4/3
>>> a
0.0006944444444444445
Finalmente, cuando Typecast el primer entero a flotar, el resultado es la deseada, ya que a partir de la primera división, es decir, el extremo izquierdo, utilizamos flotadores.
adicional 1: Si usted está tratando de responder que para mejorar la evaluación de la aritmética, usted debe comprobar this
extra 2: Por favor, tenga cuidado con el siguiente escenario:
>>> a = float(1/2/3/4/5/4/3)
>>> a
0.0
Ver también: [¿Por qué esta división no funciona en python?] (Http://stackoverflow.com/questions/1787249/why-doesnt-this-division-work-in-python/1787255#1787255) – miku
Adam, todavía no me gusta tu explicación. El primer ejemplo es la división entera, que simplemente devuelve 0. El segundo ejemplo está entre paréntesis incorrectamente para el efecto que desee. –
@GregS El primer ejemplo fue el problema. El segundo ejemplo es explicativo y fue escrito después de la primera pregunta. Todas las respuestas a continuación explican el problema muy bien, especialmente @KennyTM. Es importante notar que mi problema original es solo un problema en Python 2.x, no 3. Es un poco desconcertante que el comportamiento cambie de esa manera, pero ahora que lo sé, lo usaré de la división de importación __future__ y usaré el 3 .x comportamiento. Aclamaciones. –