Rumah > Java > javaTutorial > Mengapa Operator Modulo Java Menghasilkan Nilai Negatif untuk Nombor Negatif?

Mengapa Operator Modulo Java Menghasilkan Nilai Negatif untuk Nombor Negatif?

Linda Hamilton
Lepaskan: 2024-11-03 20:48:03
asal
409 orang telah melayarinya

Why Does Java's Modulo Operator Yield Negative Values for Negative Numbers?

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:

  1. Menggunakan Modulus Secara Positif:
<code class="java">int i = (((-1 % 2) + 2) % 2);</code>
Salin selepas log masuk

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].

  1. Menyemak Negativiti:
<code class="java">int i = -1 % 2;
if (i < 0) i += 2;</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan