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

Python division operator gives different results

在 Python 中,我试图将一个整数除以一半,但根据数字的符号我遇到了两个不同的结果。

示例:

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

除以-5/2如何得到-2?

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

这是由于 python 四舍五入 整数除法 。下面是几个例子。在 python 中,float 类型是 stronger 类型,涉及 floatint 的表达式计算结果为 float

>>> 5/2
2
>>> -5/2
-3
>>> -5.0/2
-2.5
>>> 5.0/2
2.5
>>> -5//2
-3

要避免四舍五入,您可以利用这个 属性;而是使用 float 执行计算,以免丢失精度。然后使用 math module 到 return 该数字的上限(然后再次转换为 -> int):

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

你应该像下面这样在表达式中包含除法

print -(5/2)

需要先用浮点除法再用int截小数

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

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

>>> -5 / 2.0
-2.5

截至 this accepted answer

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

> int(float(5)/2)
2