float(5.5 + 1) # returns 6.5
float(5.5) + 1 # also returns 6.5
float(11 / 2) # returns 5
float(11) / 2 # returns 5.5
为什么float
在此示例中的工作方式不同?
答案 0 :(得分:1)
差异是由运算符和操作数类型引起的,float
与它没有任何关系。
/
在Python 2中执行整数除法。所以
>>> 11 / 2
5
然后float(5)
为5.0
。
如果至少有一个操作数是float
,/
将执行浮动除法:
>>> float(11) / 2 # == 11.0 / 2
5.5
请参阅PEP 238。
答案 1 :(得分:0)
float(11 / 2)
首先评估11/2
,即5(因为两者都是整数,除法结果将是一个整数),然后将其转换为浮点数5.0
float(11) / 2
这将11转换为第一个浮点数,即11.0,然后除以2. 11.0/2=5.5
,(因为其中一个是浮点数,除法结果将是一个浮点数),正是你得到的。
答案 2 :(得分:0)
在Python 2.x中,整数除法返回一个整数。您需要将其中一个操作数强制转换为浮点数,例如float (11.0 / 2)
。您还可以使用from __future__ import division
将Python 3.x的除法行为导入到2.x.
此外,//
总是指2.x和3.x上的分割。