Python: 4/5 = 0.0. ¿Falta la statement de flotación?

Disculpas si esto ya ha sido preguntado, pero por qué hace esto

a=4 b=5 c=float(a/b) print c 

Da

 >>>> 0.0 

en lugar de 0,8?

En Python 2, la división entre 2 enteros devolverá un entero (redondeando al entero más cercano a 0), en este caso, 0 . Su código es básicamente float(0) que es 0.0 .

Necesitaría cambiar uno de sus valores a un valor flotante primero si desea devolver un valor flotante.

Este comportamiento se cambia en Python 3, donde la división entre 2 enteros devolverá un valor flotante, 0.8 en este caso.

Eso es porque esta es una división entera:

 >>> 4/5 0 

Si quieres obtener 0.8 , lanza uno de los dos para flotar antes de la división:

 >>> 4/float(5) 0.8 

Si no quieres introducir float en una de las variables. Podrías hacer esto:

 from __future__ import division 4/5 

Esto le dará a lo que está buscando 0.8, sin tener que introducir flotante.

En Python 2 / devuelve solo la parte entera si usa dos enteros, como int(0.8) . Tienes que usar el flotador es decir. float(a) o 4.0 (poco 4. ) o * 1.0

 print float(4)/5 print 4/float(5) print 4.0/5 print 4/5.0 print 4./5 print 4/5. print a*1.0/b # sometimes you can see this method print a/(b*1.0) # this version need () - without () you get (a/b)*1.0 

4/5 devolverá 0 porque es una división int, luego lanzas float en 0

Debido a la división de enteros … la división de dos enteros se devolverá y un entero. El valor de 0,8 se trunca a 0.

Necesita elevar uno de sus enteros a un flotador si desea una respuesta de punto flotante.

P.EJ

c = float (a) / b