取模怎么算
取模運算實際上是計算兩數相除以后的余數。假設 q 是 a、b 相除產生的商(quotient),r 是相應的余數(remainder),那么在幾乎所有的計算系統中,都滿足:
a = b x q + r,其中 |r|<|a|。
因此 r 有兩個選擇,一個為正,一個為負;相應的,q 也有兩個選擇。如果a、b 都是正數的話,那么一般的編程語言中,r 為正數;或者如果 a、b 都是負數的話,一般 r 為負數。但是如果 a、b 一正一負的話,不同的語言則會根據除法的不同結果而使得 r 的結果也不同,但是一般 r 的計算方法都會滿足:
r = a - (a / b) x b 注意:當a是小數時,r = a - ((int)a / b) * b
C/Java 取模
大多數語言的處理方式都與 C/Java 一致,采用了 truncate 除法。所以在 C/Java 語言中:
-17 % 10 的計算結果如下:r = (-17) - (-17 / 10) x 10 = (-17) - (-1 x 10) = -7
17 % -10 的計算結果如下:r = 17 - (17 / -10) x (-10) = (17) - (-1 x -10) = 7
-17 % -10 的計算結果如下:r = (-17) - (-17 / -10) x (-10) = (-17) - (1 x -10) = -7
可以看出:運算結果的符號始終和被模數的符號一致。
參考原文:https://blog.csdn.net/cswhale/article/details/78602414
