淘先锋技术网

首页 1 2 3 4 5 6 7

python是怎么算出来的?

1. 模运算的计算原理是这样的:

假设想求的a = x%y,a的值是通过如下公式算出来的:

a = x - (x/y)*y,且除法是按照整数除法来运算的

所以将你的数字代入公式:

-17%10 = -17 - (-17/10)*10 = -17 - (-2)*10 = 3.

产生这个结果的关键在于程序的取模公式,保证了

y是正数,模运算的结果就是[0,y),

y是负数,模运算的结果就是(y,0]

2. 通常人们希望整除的商和余数会有这样的特性:

1. 被除数 = 除数*商 + 余数

2. 被除数符号变化,商的符号也变化,而绝对值不变

3. 余数的符号和除数相同

但实际上这 3 条不能总是符合的,第 1 条是肯定要符合的。

举例来说,3/2 为 1,3%2 为 1,如果要符合第 2 条,那就是 -3/2 为 -1,-3%2 为 -1,它是不符合第 3 条的;而如果要符合第 3 条,则是 -3%2 为 1,-3/2 为 -2,它是不符合第二条的。

所以一般编程语言会在第 2 或者 第 3 条中选择一条,python 选择的就是满足第 3 条的方式。很多其它的语言选择的是第 2 条。所以在 python 中,-17%10 为 3,而 -17/10 为 -2

注,在 python 3 中 / 表示除法,不表示整除,所以 -17/10 在 python 3 中为 -1.7,两个 / 才表示整除: -17//10 为 -2