erreur: opérandes non valides en% binary lors de la prise de module de float

Sa semaine a été assez longue, alors pardonnez-moi si je suis épaisse.

J’ai du code comme:

float someFloat = 0; //....do some stuff to someFloat //.... if( someFloat % 1) { //take some action } 

J’obtiens une erreur de compilation: error: invalid operands to binary %

En supposant que le compilateur ne consum pas, qu’est-ce qui ne va pas?

EDIT: En passant, ce que je voulais réellement faire était de détecter les valeurs non entières et d’arrondir. J’aurais dû faire appel à roundf (et vérifier si le retour est inférieur à l’opérande, puis incrémenter si c’est le cas, afin de nous assurer que nous avons arrondi la limite)

% est un opérateur entier – utilisez fmod ou fmodf pour les doublons ou les flottants.

Alternativement, si vous pensez que votre float représente des valeurs entières, convertissez-le d’abord en int , par exemple:

 if ((int)someFloat % 2 == 1) // if f is an odd integer value { ... } 

L’opérateur de module ne fonctionne que sur des entiers. Pour les valeurs en virgule flottante, utilisez fmod ou fmodf .

% cela ne fonctionne qu’avec des entiers, utilisez fmod pour les valeurs à virgule flottante ou les valeurs doubles **

 double fmod(double x, double y) x -- This is the floating point value with the division numerator iex y -- This is the floating point value with the division denominator iey