我覺得很多人搞不清楚這兩個概念的區別,剛好在翻譯lua手冊時遇到%與math.fmod這兩個操作,順便做一下說明吧。
求模與求餘的區別。
假設對a與b兩個
整數做求模或求餘操作。那麼第一步是先求整數商c,即
a / b
的值,第二步是計算模或餘數:
a - c * b
。求模與求餘的區別在於怎麼處理
a / b
的值。
求模運算時,
a / b
的結果向無窮小方向捨入,求餘運算時
a / b
的結果向
0方向捨入。
因此,求模時結果的符號與
b一致,求余時結果的符號與
a一致。 在
lua中
4%(-3)
等於-2
,由此可以看出
lua的
%是求模操作而不是求餘操作。
4/(-3)
向無窮小捨入為
-2,則模數為
4 - (-2 * -3) = -2。
在lua中math.fmod(4,-3)等於1,因此fmod是求餘操作而不是求模操作。4/(-3)向0方向捨入為-1,則餘數為4-(-1 * -3)= 1。
很容易可以得出另乙個結論:如果a,b都是正整數的話,求模與求餘沒有區別。
Mod(求模或求餘)
1.求餘 取整除後的餘數,例如 10 mod 4 2 17 mod 4 1 3 mod 4 3 4 mod 3 1 4 mod 3 1 如果a mod b是異號,那麼得出的結果符號與a相同 當然了,a mod b就相當與a a div b b 的運算。例如 13 mod 4 13 13 div 4 ...
取模和求餘的區別
參考 通常情況下取模運算 mod 和求餘 rem 運算被混為一談,因為在大多數的程式語言裡,都用 符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下 運算子的具體意義,因為在有負數存在的情況下,兩者的結果是不一樣的。對於整型數a,b來說,取模運算或者求餘運算的方法都是 1.求 整數商 c...
關於負數求模運算
當我們遇到 2 3的時候,怎麼運算呢?通常乙個數m mod n 可以將m表示為 k n r 其中0 r n 1就是餘數,也是求模的結果。當m為負數的時候,這時候有兩種方法 1 先將負號提出去,直接求 m n,之後加上負號,最後還要加上n,就是最終結果了 例如 5 3 5 3 2 2 3 1 即 5 ...