Rumah > pembangunan bahagian belakang > C++ > Mengapa Operator Modulus C (%) Hanya Berfungsi dengan Integer, dan Bagaimana Saya Boleh Mengendalikan Baki Pecahan?

Mengapa Operator Modulus C (%) Hanya Berfungsi dengan Integer, dan Bagaimana Saya Boleh Mengendalikan Baki Pecahan?

Patricia Arquette
Lepaskan: 2024-12-20 21:53:10
asal
759 orang telah melayarinya

Why Does C's Modulus Operator (%) Only Work with Integers, and How Can I Handle Fractional Remainders?

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

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

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!

sumber:php.cn
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