Rumah >Java >javaTutorial >## Mengapakah Operator Modulus Java (%) Mengembalikan Keputusan Negatif untuk Nombor Negatif?

## Mengapakah Operator Modulus Java (%) Mengembalikan Keputusan Negatif untuk Nombor Negatif?

Susan Sarandon
Susan Sarandonasal
2024-10-29 12:39:30248semak imbas

## Why Does Java's Modulus Operator (%) Return Negative Results for Negative Numbers?

Pengiraan Modulus dalam Java: Mengendalikan Nombor Negatif

Di Java, melakukan operasi modulus pada nombor negatif selalunya menghasilkan keputusan yang tidak dijangka. Apabila menggunakan pengendali modulus (%) pada nombor negatif, seseorang mungkin mengharapkan untuk memperoleh nilai positif, tetapi dalam beberapa kes, ia mengembalikan hasil negatif. Untuk memahami tingkah laku ini, adalah penting untuk menyelidiki cara dalaman pengiraan modulus.

Operator modulus mengira baki apabila membahagikan satu nombor dengan yang lain. Untuk nombor positif, selebihnya adalah positif secara konsisten. Walau bagaimanapun, apabila berurusan dengan nombor negatif, terdapat dua takrifan modulus yang mungkin:

  1. Modulus Bertingkat: Takrifan ini membundarkan baki ke bawah kepada integer terdekat ke arah infiniti negatif.
  2. Modul Pemangkasan: Takrifan ini membundarkan baki ke bawah kepada sifar (iaitu, ia membuang mana-mana bahagian pecahan).

Java menggunakan definisi modulus pemangkasan. Akibatnya, apabila membahagikan nombor negatif dengan nombor positif, bakinya sentiasa negatif. Sebagai contoh, -13 % 64 menilai kepada -13 di Jawa kerana -13 dibahagikan dengan 64 tanpa sebarang komponen pecahan.

Jika seseorang inginkan baki positif untuk input negatif, coretan kod berikut boleh digunakan:

<code class="java">int r = x % n;
if (r > 0 && x < 0) {
    r -= n;
}</code>

Sebaliknya, jika seseorang memilih baki negatif untuk input negatif, coretan kod berikut boleh digunakan:

<code class="java">int r = x % n;
if (r < 0) {
    r += n;
}</code>

Memahami takrifan modulus yang berbeza-beza adalah penting apabila bekerja dengan nombor negatif dalam bahasa pengaturcaraan yang berbeza. Dengan memahami perbezaan antara modulus lantai dan pemotongan, pembangun boleh memastikan bahawa kod mereka berkelakuan seperti yang dimaksudkan, terutamanya apabila berurusan dengan input negatif.

Atas ialah kandungan terperinci ## Mengapakah Operator Modulus Java (%) Mengembalikan Keputusan Negatif untuk Nombor Negatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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