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);