在我的应用程序中,我遇到了以下情况并对结果感到惊讶:
8/-7=-2
(两个整数)。
这是什么意思?
对于实际值,即8.0/(-7.0)
,结果大致为-1.143
。
您使用整数除法的结果正在向下舍入到 的更负值-2
。(这也称为“楼层划分”)
这就是为什么你会得到一些令人困惑的答案:
>>> 8/(-7)
-2
>>> 8/7
1
注意:这在 Python 3 中是“固定的”,结果8/(-7)
将是-1.143
. 所以如果你没有理由使用 Python 2,你应该升级。;)
在 Python 3 中,如果您仍然想要整数除法,可以使用//
运算符。8/(-7)
这将为您提供与Python 2 中相同的答案。
这是关于该主题的 Python 增强提案:PEP 238 -- 更改除法运算符
Python 总是对负数除法和正数除法进行“地板除法”。
那是
1/10 = 0
1/-10 = -1
但有时我们需要 1/-10 为 0
我发现它可以通过首先使用浮点除法然后将结果转换为 int 来完成,例如
int(float(1)/-10) = 0
这对我来说很好,不需要导入未来的部门或升级到 Python 3
希望对你有帮助~
要让 Python 自动将整数除法转换为浮点数,您可以使用:
from __future__ import division
现在:
8/-7=-1.1428571428571428
标准 Python 2 中没有此功能,不会破坏依赖整数除法的现有代码。
但是,这是 Python 3 的默认行为。
当两个值都是整数时,Python 使用 Floor 除法。
在 Python 中,/
运算符用于整数除法。您可以将其视为浮点除法,然后进行floor
操作。
例如,
8/7 == 楼层(8.0/7.0) == 1
8/-7 == 楼层(8.0/-7.0) == -2