Vous ne pouvez pas utiliser le module sur les doubles?

J’ai un programme en C ++ (compilé en utilisant g ++). J’essaie d’appliquer deux doubles comme opérandes à la fonction de module, mais j’obtiens l’erreur suivante:

erreur: opérandes invalides de type ‘double’ et ‘double’ à binary ‘opérateur%’

Voici le code:

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

L’opérateur % est pour les entiers. Vous recherchez la fonction fmod() .

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

fmod(x, y) est la fonction que vous utilisez.

Utilisez fmod() partir de . Si vous ne souhaitez pas inclure le fichier d’en-tête C (remarque: U ne peut pas être float ou double ):

 template constexpr T dmod (T x, U mod) { return !mod ? x : static_cast(x) % mod + x - static_cast(x); } //Usage: double z = dmod(14.3, 4); double z = dmod(14, 4); //This also works: double z = dmod(14, 4); double z = dmod(14, 0); double z = dmod(myFirstVariable, someOtherVariable);