python除法结果与负数不同

时间:2013-12-13 15:25:34

标签: 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
>>>

有人可以说明为什么我的答案与负数除法有所不同吗?感谢。

3 个答案:

答案 0 :(得分:3)

在Python 2.X中,/实际上是整数和长期的分区:

  

当前的除法运算符(/)对于数值参数有一个含糊不清的含义:如果参数是整数或长整数,它返回除数的数学结果的底限,但如果参数是,则它返回除法结果的合理近似值漂浮或复杂。这使得表达式期望浮点或复杂结果在不期望整数但可能作为输入时容易出错。 [来源:PEP 238]

如果要使用带有整数/长整数的真正除法,可以将from __future__ import division添加到模块中(或切换到3.X)。如果这样做,您可以通过执行x//y来使用分层。

>>> 9/7
1
>>> -9/7
-2
>>> from __future__ import division
>>> 9/7
1.2857142857142858
>>> -9/7
-1.2857142857142858

答案 1 :(得分:2)

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

答案 2 :(得分:1)

就像Floor and ceiling functions一样,你会得到它,因为你使用的是整数

你可以试试int()函数,如果你想让它在值上“相等”, 像这样

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

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