使用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
答案 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?
的答案之一