为什么float()在+和/上的工作方式不同?

时间:2015-11-11 08:24:04

标签: python python-2.7 floating-point division

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在此示例中的工作方式不同?

3 个答案:

答案 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上的分割。