Rumah >pembangunan bahagian belakang >C++ >Mengapa Operator Modulus Tidak Berfungsi dengan Beregu dalam C ?

Mengapa Operator Modulus Tidak Berfungsi dengan Beregu dalam C ?

Patricia Arquette
Patricia Arquetteasal
2024-12-06 18:39:17507semak imbas

Why Doesn't the Modulus Operator Work with Doubles in C  ?

Nilai Berganda dan Operasi Modulus

Dalam pengaturcaraan, pengendali modulus (%) mengira baki apabila satu nombor dibahagikan dengan yang lain. Walau bagaimanapun, dalam C , cuba menggunakan operasi modulus kepada dua nombor titik terapung berketepatan ganda (berganda) mengakibatkan ralat.

Kod berikut menunjukkan isu ini:

int main() {
    double x = 6.3;
    double y = 2;
    double z = x % y;
}

Selepas penyusunan, kod ini menghasilkan ralat:

error: invalid operands of types 'double' and 'double' to binary 'operator%'

Ralat ini berlaku kerana pengendali modulus ditakrifkan hanya untuk integer operan. Untuk beregu, fungsi yang setara ialah fmod(). Untuk menggunakan operasi modulus dengan nilai berganda, gunakan fmod() seperti berikut:

#include <cmath>

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

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