取余運算與取模運算
取余運算(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;