Python:4/5=0.0。浮动声明丢失?
如果已经提出此问题,则表示歉意,但为什么:Python:4/5=0.0。浮动声明丢失?,python,python-2.7,Python,Python 2.7,如果已经提出此问题,则表示歉意,但为什么: a=4 b=5 c=float(a/b) print c 给予 而不是0.8?4/5将返回0,因为它是一个整数除法,然后由于整数除法,将浮点值转换为0。除以两个整数将返回和整数。值0.8被截断为0 如果需要浮点答案,则需要将其中一个整数提升为浮点 例如 c=float(a)/b这是因为这是一个整数除法: >>> 4/5 0 >>> 4/float(5) 0.8 如果要获得0.8,请在除法之前将两个选项之一转换
a=4
b=5
c=float(a/b)
print c
给予
而不是0.8?
4/5
将返回0,因为它是一个整数除法,然后由于整数除法,将浮点值转换为0。除以两个整数将返回和整数。值0.8被截断为0
如果需要浮点答案,则需要将其中一个整数提升为浮点
例如
c=float(a)/b这是因为这是一个整数除法:
>>> 4/5
0
>>> 4/float(5)
0.8
如果要获得0.8
,请在除法之前将两个选项之一转换为浮动:
>>> 4/5
0
>>> 4/float(5)
0.8
在Python 2中,如果使用两个整数,例如
int(0.8)
,则只返回整数部分。您必须使用浮点,即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
在Python 2中,2个整数之间的除法将返回一个整数(四舍五入到最接近的整数为0),在本例中为
0
。您的代码基本上是float(0)
,即0.0
如果要返回浮点值,需要先将其中一个值更改为浮点值
在Python 3中,这种行为发生了变化,在这种情况下,2个整数之间的除法将返回一个浮点值,
0.8
。如果不想在其中一个变量中引入浮点值。您可以这样做:
from __future__ import division
4/5
这将给出您想要的0.8,而不必引入浮动。在Python3中,您将得到0.8。根据python版本的不同,它会有所不同。它不会被截断<代码>4/5已经产生
0
。