Python:4/5 = 0.0。浮动声明丢失了吗?

时间:2016-10-04 15:08:41

标签: python python-2.7

如果已经问过这个问题,请道歉,但为什么会这样:

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

print c

给出

>>>>
0.0

而不是0.8?

6 个答案:

答案 0 :(得分:3)

那是因为这是一个整数除法:

>>> 4/5
0

如果你想获得0.8,则在分割之前将其中一个转为浮动:

>>> 4/float(5)
0.8

答案 1 :(得分:2)

如果您不想在其中一个变量中引入float。你可以这样做:

from __future__ import division

4/5

这将给出你想要的0.8,而不必引入浮动。

答案 2 :(得分:1)

在Python 2中/如果使用两个整数,则仅返回整数部分 - 如int(0.8)。你必须使用浮动ie。 float(a)4.0(简称4.)或* 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

答案 3 :(得分:1)

在Python 2中,2个整数之间的除法将返回一个整数(舍入到最接近0的整数),在本例中为0。您的代码基本上是float(0)0.0

如果要返回浮点数,则需要先将其中一个值更改为浮点数。

在Python 3中更改了此行为,其中2个整数之间的分区将返回浮点数,在这种情况下为0.8

答案 4 :(得分:0)

4/5将返回0,因为它是一个int分区,然后你将浮点数转换为0

答案 5 :(得分:0)

由于整数除法....除以两个整数将返回整数。值0.8被截断为0。

如果您想要浮点答案,则需要将其中一个整数提升为浮点数。

E.G。

c = float(a)/ b