1. 程式人生 > >java中的取模運算

java中的取模運算

Java中使用%作為取模運算的運算子,這與C、C++中是一致的。對於取模運算,大家並不陌生。取模運算實際上相當於我們小學的時候學過的求餘數。當時之所以引入餘數是因為還沒有講過小數的概念。所以進行除法運算時,除不盡的部分就被當做餘數來處理。比如5除以3等於1餘2。在當時我們學習求餘數的時候只涉及到兩個正整數相除,對於兩個負數或者一正一負兩個數或者是一個小數除以一個整數情形又是如何呢?Java中的語法到底支不支援上面的這些情況呢?我也不知道答案。不過沒有關係,寫個小程式試試不就知道了。 

測試一:

複製程式碼
1 public class ModTest {

2       public static
void main(String[] args){ 3 int a = 5; 4 int b = 3; 5 System.out.println(a % b); 6 } 7 }
複製程式碼

編譯執行後的結果:2

測試二:

複製程式碼
1 public class ModTest {

2       public static void main(String[] args){

3       int a = -5;

4       int b = 3;

5       System.out.println(a % b);

6       }

7
}
複製程式碼

編譯執行後的結果:-2

測試三:

複製程式碼
1 public class ModTest {

2       public static void main(String[] args){

3       int a = 5;

4       int b = -3;

5       System.out.println(a % b);

6       }

7 }
複製程式碼

編譯執行後的結果:2

測試四: 複製程式碼
1 public class ModTest {

2       public static void main(String[] args){

3       int
a = -5; 4 int b = -3; 5 System.out.println(a % b); 6 } 7 }
複製程式碼 編譯執行後的結果:-2 通過上面的四個測試可以總結出:取模支援對負數進行運算,且結果的符號總是與被除數的符號保持一致。 測試五: 複製程式碼
1 public class ModTest {

2       public static void main(String[] args){

3       double a = 5.3;

4       int b = 3;

5       System.out.println(a % b);

6       }

7 }
複製程式碼 編譯執行後的結果:2.3 測試六:  複製程式碼
1 public class ModTest {

2       public static void main(String[] args){

3       int a = 5;

4       double b = 3.3;

5       System.out.println(a % b);

6       }

7 }
複製程式碼 編譯執行後的結果:1.7000000000000002 通過測試五六可以看到:取模也支援對小數進行運算。 測試七: 複製程式碼
1 public class ModTest {

2       public static void main(String[] args){

3       double a = 5.3;

4       double b = 3.3;

5       System.out.println(a % b);

6       }

7 }
複製程式碼 編譯執行後的結果:2.0 兩個小數也可以進行取模運算! 另外經過測試,負小數也可以進行模運算,結果的符號也滿足上面的規律。 補充:今天在看《Thinking in Java》第三章的時候,書上舉了一個針對不同資料型別進行所有運算的例子,通過分析發現:對於具有相同型別的兩個變數a和b,取模運算適用於除了布林型別之外的所有基本資料型別。具體說,對於兩個變數a和b,當a、b均為布林型別時,它們是不能進行取模運算的;當a、b均為字元型(或者位元組型、短整型、整型、長整型、單精度浮點型、雙精度浮點型)時,它們是可以進行取模運算的。