取模运算及取余运算
取余运算(Complementation)即我们小学时学的数学算术概念,而取模运算(Modulus Operation)常用于程序设计中
公式
a%b = a - (a/b * 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;