除法的取整分为三类:向上取整、向下取整、向零取整。
向上取整:向+∞ 方向取最接近精确值的整数。在这种取整方式下, 5 / 3 = 2
, -5 / -3 = 2
, -5 / 3 = -1
, 5 / -3 = -1
。
向下取整:向-∞ 方向取最接近精确值的整数。在这种取整方式下, 5 / 3 = 1
, -5 / -3 = 1
, -5 / 3 = -2
, 5 / -3 = -2
。
向零取整:向 0 方向取最接近精确值的整数,换言之就是舍去小数部分,因此又称截断取整。在这种取整方式下, 5 / 3 = 1
, -5 / -3 = 1
, -5 / 3 = -1
, 5 / -3 = -1
。
然后由除法结果根据如下公式推导出模运算结果。
a / b = q
a % b = r
b * q + r = a
Python3 向负无穷大取整
-5 / 3 = -(1.66666)=-2
-5 % 3 = r
a = -5
b = 3
q = -2
3 * (-2) + r = -5
r = 1
Golang 向零取整
-5 / 3