Pengiraan Modulus dengan Nombor Negatif dalam Java
Di Java, operator modulus (%) mengembalikan baki selepas membahagikan dua nombor. Walau bagaimanapun, apabila berurusan dengan nombor negatif, hasilnya mungkin tidak seperti yang dijangkakan.
Isu:
Pemaju menghadapi keputusan yang tidak dijangka apabila melakukan pengiraan modulus dengan nombor negatif, khususnya -13 % 64. Daripada hasil yang dikehendaki 51, hasilnya ialah -13.
Penjelasan:
Takrifan modulus untuk nombor negatif berbeza-beza merentas pengaturcaraan bahasa. Di Jawa, baki yang dikembalikan oleh pengendali modulus mempunyai tanda yang sama dengan dividen (pembilang). Oleh itu, -13 % 64 menilai kepada -13.
Penyelesaian:
Untuk mendapatkan hasil 51 yang diingini, pembetulan berikut boleh digunakan:
<code class="java">int r = x % n; if (r > 0 && x < 0) { r -= n; }</code>
Kod ini memastikan baki positif apabila dividen negatif.
Sebagai alternatif, jika bahasa mengembalikan baki negatif untuk input negatif dan pembangun lebih suka keputusan positif, pelarasan berikut boleh dibuat:
<code class="java">int r = x % n; if (r < 0) { r += n; }</code>
Kod ini menukar baki negatif kepada nilai positif.
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, bermain dengan format soalan: * **Mengapa -13 % 64 bukan 51 dalam Java?** (Mudah dan langsung) * ** Operator Modulus Java dan Nombor Negatif: Cara Mendapatkan Resu yang Dijangka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!