python中-174的值是什么

Python012

python中-174的值是什么,第1张

//是整除,且结果是向负无穷大方向(即数轴的负方向)取整,也就是向下取整,即取整为不大于除法结果的最大整数。本来-17除以4等于-4.25,-4.25向负无穷大方向取整就是-5,亦即不大于-4.25的最大整数-5。所以,-17//4等于-5。

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

假设想求的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语言陷阱和缺陷》中有说明。