繁体   English   中英

整数除法的余数在Python中为负

[英]The remainder in integer division is negative in Python

请说明原因:

print ((- 1) % (-109)) # prints -1
print (1 % (-109)) # prints -108

如果余数的措词项0 <= r <b,为什么结果为负

c = mod n与说a = bn + c =(-b)(-n)+ c相同

如果我们有c = -1 mod -109,则与说相同:

-1 = b*(-109) + c for some positive c.

-1 = 0 * (-109) + (-1) so c = -1 OR c = 108 if -1 = 1*(-109) + 108

对于第二种情况,

1 = b(-109) + c = -b(109) + c

始于109> 1

1 = 0(-109) + 1 so c = 1 OR 1 = -0(109) + (-108)

从数学上讲,这些都是等效的,并且它们之间的选择在很大程度上取决于Python方面的实现问题,并且有很好的理由支持数学理论。

Guido Van Rossum的更详细说明在http://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM