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