Java%(取模運算)全面講解

Java%(取模運算)

Java的取模運算

1.實現算法

public static double ramainder(double dividend, double dividor) {
        return dividend - dividend / dividor * dividor;
    }

2.java的取模運算支持類型:字符型(自然不包括負數)、字節型、短整型、整型、長整型、單精度浮點型、雙精度浮點型.

C++的取模運算

算法同上

取模運算支持類型:字符型(不包括負數)、字節型、短整型、整型、長整型、佈爾類型(除數不能為false,原因在C++中,true表示1,false表示0,自然除數不能為0;).

註意事項:奇偶判斷

先看一段代碼:

public static void main(String[] args) {
        int arrs[] = { 2, 1, 0, -1, -2 };
        for (int i = 0; i < arrs.length; i++) {
            System.out.println(arrs[i] + (arrs[i] % 2 == 1 ? "是奇數" : "是偶數"));
        }
    }

很顯然是一段判斷奇偶性的代碼,但是結果可能大傢都能看得出來.

2是偶數1是奇數0是偶數-1是偶數-2是偶數

為什麼-1會是偶數呢? 原因就是取模運算的實現算法導致的.

System.out.println(arrs[i] + (arrs[i] % 2 == 1 ? "是奇數" : "是偶數"));
//修改為:
System.out.println(arrs[i] + (arrs[i] % 2 == 0 ? "是偶數" : "是奇數"));

給我一個警示:在以後的奇偶判斷使用中,使用偶數進行判斷代替使用奇數.

(同樣的現象C++中也是一樣)

編程語言中的%取模運算的本質探究

公式:a % b = a – a / b * b(對於a為正數)

如:

-10 % 3 => -10 - (-10)/ 3 * 3 = -10 + 9 = -1

本質就是-10能夠加減多少個3能最接近0,-10肯定要加三個3,就等於-1接近0

10 % -3 => 10 - 10 / (-3) * (-3) = 10 - 9 = 1

本質就是10加減多少-3能最接近0,10肯定要加三個-3,就等於1接近0

-10 % -3 => -10 - (-10) / (-3) * (-3) = -10 + 9 = -1

本質就是-10能夠加減多少個-3能最接近0,-10肯定要減三個-3,就等於-1接近0

當a為負數時:

公式:a – (int)a / b * b

如:

-10.5%3 = -10.5 - (-10) / 3 * 3 = -10.5 + 9 = -1.5

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: