在python中除以负数的问题

时间:2014-03-23 12:48:34

标签: python

我在python中对此进行编码:

1 / -2

结果不是0而是-1,我很困惑。为什么python这样设计?它背后的逻辑是什么?

我正在使用python 2.7.6

1 个答案:

答案 0 :(得分:7)

Guido自己在这里解释:http://python-history.blogspot.co.uk/2010/08/why-pythons-integer-division-floors.html

相关摘要:

  

有一个很好的数学原因。整数除法运算(//)及其兄弟,模运算(%),一起来满足一个很好的数学关系:

     

a / b = q,其余为r

     

这样

     

b * q + r = a且0 <= r&lt; B'/ P>      

...

     

考虑采用POSIX时间戳(自1970年开始以来的秒数)并将其转换为时间。由于一天有24 * 3600 = 86400秒,这个计算只是t%86400.但是如果我们用1970年前的时间表示使用负数,那么“截断为零”规则会产生毫无意义的结果!使用最低限额规则一切正常。