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
Lepaskan: 2024-11-30 12:23:12
asal
282 orang telah melayarinya

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;
};
Salin selepas log masuk

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

Penggunaan:

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

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