我在python中对此进行编码:
1 / -2
结果不是0而是-1,我很困惑。为什么python这样设计?它背后的逻辑是什么?
我正在使用python 2.7.6
答案 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年前的时间表示使用负数,那么“截断为零”规则会产生毫无意义的结果!使用最低限额规则一切正常。