Python除法运算符给出不同的结果

时间:2016-07-26 16:46:23

标签: python integer-division floor ceil

在Python中,我试图将整数除以一半,并根据数字的符号得出两个不同的结果。

示例:

5/2 gives 2
and 
-5/2 gives -3

当我划分-5/2时如何获得-2?

5 个答案:

答案 0 :(得分:2)

你应该将分词括在表达式中,如下所示

>>> import math
>>> int(math.ceil(-5/float(2)))
-2

答案 1 :(得分:1)

这是因为python舍入整数除法。以下是一些例子。在python中,operator('Opacity', 'Assign', Math.round( (1 - opacity) * 100 ) + '%') 类型是更强大的类型,涉及floatfloat的表达式评估为int

float

为了绕过四舍五入,你可以利用这个属性;而是使用>>> 5/2 2 >>> -5/2 -3 >>> -5.0/2 -2.5 >>> 5.0/2 2.5 >>> -5//2 -3 进行计算,以免失去精确度。然后使用math module返回该数字的上限(然后再转换为 - > int ):

float

答案 2 :(得分:1)

您需要使用浮点除法,然后使用int截断小数

>>> from __future__ import division
>>> -5 / 2
-2.5
>>> int(-5 / 2)
-2

在Python 3中,浮点除法是默认值,您不需要包含from __future__ import division。或者,您可以手动将其中一个值设置为浮点以强制浮动除法

>>> -5 / 2.0
-2.5

答案 3 :(得分:1)

截至this accepted answer

> int(float(-5)/2)
-2

> int(float(5)/2)
2

答案 4 :(得分:0)

>>> import math
>>> math.ceil(float(-5)/2)
-2.0