python除法结果与负数不同

python除法结果与负数不同,python,python-2.7,Python,Python 2.7,在使用python命令行时,我注意到以下几点: Python 2.7.3 |EPD_free 7.3-2 (64-bit)| (default, Apr 11 2012, 17:52:16) [GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2 Type "credits", "demo" or "enthought" for more information. >>> 9/7 1 >>> -9/7 -2 >

在使用python命令行时,我注意到以下几点:

Python 2.7.3 |EPD_free 7.3-2 (64-bit)| (default, Apr 11 2012, 17:52:16)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "credits", "demo" or "enthought" for more information.
>>> 9/7
1
>>> -9/7
-2
>>>

有人能指出为什么我的答案与负数除法不同吗?谢谢。

因为整数除法是四舍五入到最接近的较低整数。

在Python 2.X中,
/
实际上是整数和长整数的下限除法:

当前除法(/)运算符对于数值参数的含义不明确:如果参数为int或long,则返回除法数学结果的下限;如果参数为float或复数,则返回除法结果的合理近似值。这使得期望浮点或复杂结果的表达式在不期望整数但可能作为输入时容易出错。[来源:

如果你想在整数/长整数中使用真正的除法,你可以将
从未来导入除法
添加到你的模块中(或切换到3.X)。如果你这样做,你可以通过执行
X//y
来使用楼层除法

>>> 9/7
1
>>> -9/7
-2
>>> from __future__ import division
>>> 9/7
1.2857142857142858
>>> -9/7
-1.2857142857142858
就像,你会得到,因为你使用的是整数

如果希望int()函数的值“相等”,可以尝试使用该函数, 像这样

>>> int(9/7.0)
1
>>> int(-9/7.0)
-1

您可以将一个或两个数字加上“.0”以获得浮点值

这没什么不同,它总是向下舍入。除法总是向下舍入到负无穷大。如果将它们视为浮点数,则:
9.0/7.0,-9.0/7->(1.2857142857142858,-1.2857142857142857142858)
…既然它像其他人提到的那样被舍入了……那么你就有机会从地板分区切换到真正的分区。