84 votes

Comment faire une opération modulo dans objective-c / cocoa touch ?

J'ai deux valeurs CGFloat, et je veux calculer le résultat du modulo. Ou en d'autres termes : Je veux savoir ce qui reste si la valeurA est placée autant que possible dans la valeurB.

Alors j'ai juste essayé :

CGFloat moduloResult = valueB % valueA;

le compilateur se plaint du % et me dit : "opérandes invalides pour le binaire %". Une idée ?

207voto

mouviciel Points 36624

% est pour int o long pas float o double .

Vous pouvez utiliser fmod() o fmodf() de <math.h> à la place.

Le mieux est <tgmath.h> como suggéré par l'inventeur de CGFloat .

11voto

James Raybould Points 4341

Si je me souviens bien, modulo nécessite 2 ints en entrée, donc vous auriez besoin de quelque chose du genre :

CGFloat moduloResult = (float)((int)valueB % (int)valueA);

En supposant que la valeur B et la valeur A sont toutes deux des valeurs flottantes.

5voto

Amber Points 159296

El % ne fonctionne pas sur les valeurs à virgule flottante. Vous devrez utiliser une fonction pour calculer ce que vous voulez. Voici le pseudo-code de base de ce à quoi cela ressemblerait :

B % A = B - (floor(B / A) * A)

Il existe également des fonctions de bibliothèque qui le font pour vous dans math.h ou tgmath.h.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X