1. 程式人生 > >Java % (取模)運算

Java % (取模)運算

取模怎麼算

    取模運算實際上是計算兩數相除以後的餘數。假設 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

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

可以看出:運算結果的符號始終和被模數的符號一致