取模负数时一定注意为什么有时会跟想的结果不一样

因为众所周知,程序执行过程中,遇到整除情况,除不尽时默认是向下取整,举个例子也就是 :
不整除时 :100 / 3 = 3 33333333… …
整除时 : 100 // 3 = 3 // 它直接就会把小数点后的所有数字抹掉从而实现取整

再来分析取模过程,取模是计算机中一个很重要的操作 符号为 %
A % B 意思呢就是 A 去除以 B 的余数;
其计算机内部对于取模符号的理解可以看作如下操作:
A - ( A // B )* B => A %B 这俩是完全等价的

所以我们来看对负数取模:
取模负数时一定注意为什么有时会跟想的结果不一样_取整
跟想象中的不一样为什么是 -2 不是 1
如果是 1 那么理解的应该是 -33 * -3 = 99
然后 100 - 99 = 1
也就是100 ➗ -3 = -33 余 1

但是呢计算里的执行过程是这样的:
100 - (100//-3)-3
首先 100 / -3 = -33.3333 ……
100 // -3 = -34 因为上面说了的计算机的取整的机制是向下取整
因为 -33 与 -34 相比 明显是 -34 更小 所以 100 // -3 = -34
再回到公式就是:
100 -(-34 )
-3 = -2

所以呢 100 % -3 = -2 了