Rumah >pembangunan bahagian belakang >C++ >Mengapa Operator Modulus Tidak Berfungsi dengan Beregu dalam C dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Operator Modulus Tidak Berfungsi dengan Beregu dalam C dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Barbara Streisandasal
2024-12-08 01:57:12843semak imbas

Why Doesn't the Modulus Operator Work with Doubles in C   and How Can I Fix It?

Ketidakupayaan untuk Menggunakan Operator Modulus dengan Pembolehubah Berganda

Dalam pengaturcaraan, operator modulus (%) biasanya digunakan untuk mengira baki selepas integer pembahagian. Walau bagaimanapun, percubaan untuk menggunakan operator ini kepada nombor titik terapung berketepatan dua dalam C boleh mengakibatkan mesej ralat yang menyatakan bahawa operan adalah tidak sah. Untuk membetulkan isu ini, kita perlu menggunakan pendekatan yang berbeza.

Ralat timbul disebabkan fakta bahawa pengendali modulus bertujuan untuk pembolehubah integer, yang hanya boleh menganggap nilai nombor bulat. Pembolehubah berganda, sebaliknya, mewakili nombor pecahan. Untuk melakukan operasi yang serupa pada beregu, kita mesti menggunakan fungsi fmod().

Berikut ialah cara untuk menyelesaikan isu menggunakan fungsi fmod():

#include <cmath>

int main() {
    double x = 6.3;
    double y = 2.0;
    double z = std::fmod(x, y);
}

Fmod() fungsi ditakrifkan dalam perpustakaan dan beroperasi sama dengan pengendali modulus. Walau bagaimanapun, ia mengembalikan baki selepas membahagikan operan pertama (x) dengan operan kedua (y) sebagai nombor titik terapung berketepatan dua kali. Dengan menggabungkan fungsi ini, kami boleh berjaya menggunakan operasi modulus pada beregu dalam program C kami.

Atas ialah kandungan terperinci Mengapa Operator Modulus Tidak Berfungsi dengan Beregu dalam C dan Bagaimana Saya Boleh Membetulkannya?. 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