Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Membetulkan Gelagat Tidak Dijangka Operator Modulo JavaScript dengan Nombor Negatif?

Bagaimanakah Saya Boleh Membetulkan Gelagat Tidak Dijangka Operator Modulo JavaScript dengan Nombor Negatif?

Susan Sarandon
Susan Sarandonasal
2024-11-30 12:23:12262semak imbas

How Can I Fix the Unexpected Behavior of JavaScript's Modulo Operator with Negative Numbers?

Membetulkan Operator Modulo Nombor Negatif dalam JavaScript

Dalam JavaScript, pengendali modulo (%) mengembalikan baki apabila membahagikan satu nombor dengan yang lain. Walau bagaimanapun, untuk nombor negatif, pengendali modulo JavaScript berkelakuan di luar jangkaan, mengembalikan hasil negatif. Isu ini timbul kerana JavaScript secara dalaman menggunakan integer yang ditandatangani, yang tidak sesuai untuk operasi modulo.

Untuk menyelesaikan isu ini, anda boleh menggunakan fungsi mod tersuai berikut:

Number.prototype.mod = function (n) {
  "use strict";
  return ((this % n) + n) % n;
};

Fungsi ini memastikan bahawa keputusan modulo sentiasa positif, selaras dengan definisi matematik bagi modulo.

Penggunaan:

console.log(-13.mod(64)); // Output: 51

Penjelasan:

Fungsi mod tersuai terlebih dahulu mengira baki menggunakan asli operator modulo JavaScript. Kemudian, ia menambah pembahagi (n) kepada bakinya. Ini memastikan bahawa hasilnya bukan negatif. Akhir sekali, ia melakukan operasi modulo kedua untuk mendapatkan baki positif akhir.

Fungsi modulo yang diubah suai ini menjajarkan gelagat JavaScript dengan hasil matematik yang dijangkakan, memudahkan pengiraan yang konsisten dan tepat melibatkan nombor negatif.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membetulkan Gelagat Tidak Dijangka Operator Modulo JavaScript dengan 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