Nilai Modulus Negatif dalam Java
Soalan Asal:
Apabila menggunakan operator modulo dalam Java, nombor negatif kadangkala menghasilkan nilai negatif. Sebagai contoh, pengiraan int i = -1 % 2 menghasilkan -1, manakala dalam Python, pengiraan yang sama ini mengembalikan 1.
Penjelasan:
Perbezaan tingkah laku antara Java dan Python timbul daripada perbezaan antara modulus dan operasi selebihnya. Dalam Python, operator % melakukan operasi modulus, yang sentiasa mengembalikan hasil positif, walaupun untuk input negatif. Sebaliknya, operator % Java mengira bakinya, yang mungkin negatif untuk input negatif.
Penyelesaian:
Untuk mencapai gelagat yang sama seperti operasi modulo Python dalam Java, seseorang boleh mengikuti pendekatan ini:
<code class="java">int i = (((-1 % 2) + 2) % 2);</code>
Dalam ungkapan ini, operasi modulus pertama kali dilakukan dalam kurungan, menghasilkan nilai negatif. Menambah 2 mengalihkan hasil ke dalam julat positif dan operasi modulus akhir memastikan ia berada dalam julat [0, 1].
<code class="java">int i = -1 % 2; if (i < 0) i += 2;</code>
Di sini, operasi modulus dengan nombor negatif dinilai terlebih dahulu. Jika keputusannya negatif, ia dinaikkan sebanyak 2 untuk mendapatkan modulus positif.
Pilihan pendekatan bergantung pada keperluan khusus dan kemudahan penyepaduan ke dalam pangkalan kod sedia ada.
Atas ialah kandungan terperinci Mengapa Operator Modulo Java Menghasilkan Nilai Negatif untuk Nombor Negatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!