我覺得很多人搞不清楚這兩個概念的區別,剛好在翻譯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都是正整數的話,求模與求余沒有區別。
新聞熱點
疑難解答