Mengapa Pembahagian Modulus (%) Hanya Berfungsi dengan Integer dalam C
Bahagian dengan operator modulus (%) dalam C adalah terhad kepada integer operan kerana sifat semula jadi pembahagian integer. Apabila membahagi integer, hasilnya secara semula jadi adalah integer, dan selebihnya (hasil selepas menolak hasil bahagi dan pembahagi) juga merupakan integer.
Walau bagaimanapun, apabila berurusan dengan nombor nyata, tanggapan " baki" menjadi lebih kompleks. Pertimbangkan contoh berikut:
double x = 3.1; int y = 2; double remainder = x % y;
Dalam kes ini, hasil yang diingini ialah 1.1, kerana 3.1 dibahagikan dengan 2 menghasilkan hasil bagi 1 dan baki 1.1. Malangnya, operator modulus dalam C menganggap kedua-dua x dan y sebagai integer, menghasilkan baki integer 1 dan bukannya 1.1.
Untuk menangani isu ini dalam C, anda boleh menggunakan fungsi fmod daripada perpustakaan standard. Fungsi ini melaksanakan pembahagian hibrid dan mengembalikan baki pecahan, walaupun operan adalah nombor nyata. Contohnya:
#include <math.h> double x = 3.1; int y = 2; double remainder = fmod(x, y);
Ini akan menghasilkan baki 1.1 yang betul, memastikan operasi modulus berkelakuan secara konsisten untuk kedua-dua operan integer dan nyata.
Atas ialah kandungan terperinci Mengapa Operator Modulus C (%) Hanya Berfungsi dengan Integer, dan Bagaimana Saya Boleh Mengendalikan Baki Pecahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!