Selesaikan masalah mengambil nombor modulo negatif dengan bijak
Banyak bahasa pengaturcaraan menyediakan pengendali modulo (%), yang digunakan untuk mengira baki selepas membahagikan satu nombor dengan yang lain. Walau bagaimanapun, apabila pengendali ini digunakan pada nombor negatif, keputusan yang tidak dijangka mungkin berlaku.
Sebagai contoh, apabila melaksanakan -1 % 3 dalam bahasa seperti C atau Java, hasilnya ialah -1 dan bukannya 2 yang dijangkakan. Ini kerana pengendali modulo biasanya mengembalikan baki operasi pembahagian, yang mungkin negatif untuk dividen negatif.
Untuk mengatasi masalah ini dan mendapatkan tingkah laku yang diingini, fungsi mod tersuai boleh dilaksanakan:
<code class="language-c++">int mod(int x, int m) { return (x % m + m) % m; }</code>
Menggunakan fungsi ini, hasil pengiraan berikut adalah seperti yang dijangkakan:
输入 | 预期输出 | 函数输出 |
---|---|---|
-1 % 3 | 2 | mod(-1, 3) = 2 |
-2 % 3 | 1 | mod(-2, 3) = 1 |
-3 % 3 | 0 | mod(-3, 3) = 0 |
Cara fungsi ini berfungsi ialah ia memastikan bahawa hasilnya sentiasa positif dengan menambahkan modulus kepada sebarang nilai negatif yang diperolehi oleh operasi modulo awal.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Keputusan Positif Apabila Menggunakan Operator Modulus dengan Nombor Negatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!