在我的应用程序中,我遇到了以下情况并对结果感到惊讶:
8/-7=-2
(两个整数)。
这是什么意思?
在我的应用程序中,我遇到了以下情况并对结果感到惊讶:
8/-7=-2
(两个整数)。
这是什么意思?
对于实际值,即8.0/(-7.0)
,结果大约为-1.143
。
使用整数除法得到的结果向更小的负值-2
舍入。(这也称为"Floor division")
这就是为什么你会得到一些令人困惑的答案:
>>> 8/(-7)
-2
>>> 8/7
1
注意:在Python 3中,8/(-7)
的结果将为-1.143
。因此,如果您没有使用Python 2的理由,应该升级到Python 3。
在Python 3中,如果你仍想要整数除法,你可以使用//
运算符。这将给出与Python 2中8/(-7)
相同的答案。
关于此主题的Python增强提案可以在这里找到:PEP 238 -- Changing the Division Operator
Python对于负数除法和正数除法总是执行“向下取整”。
也就是说
1/10 = 0
1/-10 = -1
但有时我们需要把1/-10变成0。
我发现可以先使用浮点数除法,然后将结果转换为整数,例如:
int(float(1)/-10) = 0
对我来说那很好,无需导入未来除法或升级到 Python 3
希望能帮到你~
from __future__ import division
现在:
8/-7=-1.1428571428571428
这个特性在标准的Python 2中不存在,是为了不破坏依赖整数除法的现有代码。
然而,在Python 3中,这是默认行为。
当两个值都是整数时,Python使用地板除法。
/
运算符用于整数除法。你可以将其看作是浮点除法后跟一个floor
操作。8/7 == floor(8.0/7.0) == 1
8/-7 == floor(8.0/-7.0) == -2