负数取模
计算机语言中常见的取模方式有两种:truncate
除法和floor
除法
-
truncate
除法趋零取整,Java、C、JS等大多语言采用的是这种除法。
举例:
-7 % 3 = -1
,7 % -3 = 1
推导:
-7 % 3 = -7 - truncate(-7 / 3) * 3 = -7 - (-6) = -1
7 % -3 = 7 - truncate(7 / (-3)) * (-3) = 7 - 6 = 1
-
floor
除法趋负无穷取整,Python等语言采用的是这种除法。
举例:
-7 % 3 = 2
,7 % -3 = -2
推导:
-7 % 3 = -7 - floor(-7 / 3) * 3 = -7 - (-9) = 2
7 % -3 = 7 - floor(7 / (-3)) * (-3) = 7 - 9 = -2
综上:计算负数取模时,要知道该语言采用的是哪种方式。
上面两种方式取模结果符号记忆:truncate
法模的符号与被除数一致,floor
法模的符号与除数一致。