当前位置:百问九>生活百科>python 是怎么算出来的 -17%10=3?

python 是怎么算出来的 -17%10=3?

2023-12-08 03:05:04 编辑:zane 浏览量:583

python 是怎么算出来的 -17%10=3?

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

假设想求的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]

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

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 

这个问题在《C语言陷阱和缺陷》中有说明。

版权声明:文章由 百问九 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.baiwen9.com/life/325680.html
热门文章
二维码