在我的应用程序中,我遇到了以下结果,并对结果感到惊讶:
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 -- Changing the Division Operator
要让python自动将整数除法转换为float,可以使用:
from __future__ import division
现在:
8/-7=-1.1428571428571428
此功能不在标准python 2中,不会破坏依赖于整数除法的现有代码。但是,这是python 3的默认行为。
Python总是对负数除法和正数除法进行“底层划分”。
那是
1/10 = 0
1/-10 = -1
但有时我们需要1 / -10为0
我发现它可以通过首先使用浮点除法然后将结果转换为int来完成,例如
int(float(1)/-10) = 0
这对我来说很好,不需要导入未来的部门或升级到Python 3
希望它可以帮到你〜
当两个值都是整数时,分割Python使用Floor division。
在python中,/
运算符用于整数除法。您可以将其视为浮点除法,然后进行floor
操作。
例如,
8/7 ==楼层(8.0 / 7.0)== 1
8 / -7 == floor(8.0 / -7.0)== -2