取余运算与取模运算

取余运算(Reminder Operation)即我们小学时学的算术概念,常用于数学领域,而取模运算(Modular Operation)常用于计算机领域

公式

c = a/b
a%b = a – c*b
取余运算和取模运算的运算公式相同,区别只在于在第一步求整商时采用的取整方法不同

取整运算

要明白取模运算和取余运算之间的区别,首先要了解取整运算(Round Operation)

取整运算常用的有三种,向负无穷取整,向正无穷取整,向零取整

以lua语言为例,lua的math数学库提供三个取整函数,floor向负无穷取整,ceil向正无穷取整,modf向零取整
(PS:lua的modf函数在取整时除了会返回取整后的值,还会返回小数点后的值作为第二个返回值)

示例:
a = 9
b = 4

a/b除法的结果取整方法有三种:

math.floor(9/4) = 2
math.ceil(9/4) = 3
math.modf(9/4) = 2

取模与取余

取余运算在运算时,a/b除法结果的取整使用的是modf()函数,向零取整

取模运算在运算时,a/b除法结果的取整使用的是floor()函数,向负方向取整

示例:
a,b都为整型操作数时,取模运算和取余运算相同,结果也为整型;否则,结果都为浮点型。

a = 9
b = 4

取余运算:a/b = 2 ; a%b = 1;
取模运算:a/b = 2 ; a%b = 1;

a = -9
b = 4

取余运算: a/b = -2 ; a%b = -1;
取模运算: a/b = -3 ; a%b = 3;