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