Python中的负数除法

时间:2017-02-23 01:59:40

标签: python python-2.7

使用Python 2.7和-1/2将得到-1,因为-1是-0.5的底限。但我希望得到0的结果,即1/2(结果为0),然后是负1/2(最终结果仍为0)想知道是否有一种优雅的方法来做到这一点?

我目前的解决方案是使用abs并首先检查他们的标志,看起来不是很优雅,想知道是否有人有更优雅的解决方案?

Python 2.7中的源代码

a = -1
b = 2
print a/b # output -1
# prefer -(1/2) = 0

r = abs(a)/abs(b)
if (a > 0 and b < 0) or (a < 0 and b > 0):
    r = -r
print r

3 个答案:

答案 0 :(得分:1)

做分工,然后再按照你的方式再做一次,如果它出现负面的话。

r = a / b
r = -(abs(a) / abs(b)) if r < 0 else r

答案 1 :(得分:1)

首先检查标志,然后划分:

r = a/b if ((a >= 0) ^ (b < 0)) else -a/b

答案 2 :(得分:-1)

这个怎么样?

int(a / float(b))

int函数可以解决问题:

>>> int(-0.999)
0
>>> int(0.999) 
0

我认为这也是这个问题In Python, what is a good way to round towards zero in integer division?

的答案之一