2010-09-16 14 views
8

J'ai un NSTimeInterval qui est stocké en double. Je voudrais obtenir la quantité de minutes qui sont à l'intérieur de la deuxième valeur en utilisant l'opérateur%.Utilisation de l'opérateur mod dans l'application iOS

minutes = secondValue % 60; 

où minutes est déclaré comme double minutes

Le résultat est que XCode dit "Opérande invalide à% binaire"

pensées?

+0

Voir http://stackoverflow.com/questions/1237778/how-do-i-break-down-an-nstimeinterval-into-year -mois-jours-heures-minutes-et –

+3

En plus de faire fonctionner le modulo, cela ne donne-t-il pas le résultat inverse de ce que vous voulez? Si 'secondValue' est 123 (ce qui revient à 2 minutes, 3 secondes), le résultat de' secondValue% 60' sera de 3. Il semble que ce devrait être la division. – Chuck

Répondre

12

L'OP a changé leur question, alors voici ma nouvelle réponse:

Vous voulez faire minutes = floor(secondsValue)/60; Vous voulez la division int, pas le module.

+0

vous avez corrigé une division modulo - mais est-ce que votre code suggéré a du sens? –

+0

Est-ce mieux? – AlcubierreDrive

+0

.. c'est certainement plus court! –

13

de la norme C, section 6.5.5 opérateurs multiplicatifs, paragraphe 2:

Les opérandes de l'opérateur % doivent avoir le type entier.

+0

Cette réponse n'a aucun sens puisque l'OP a édité la question. Que ce soit ou non une cause de downvote, je ne suis pas sûr. –

4

Si SecondValue est un flotteur ou double, vous pouvez utiliser la coulée de type C:

minutes = ((int)secondValue) % 60; 

EDIT:

(Si SecondValue est trop grand pour tenir dans un entier, ce ne sera pas Vous devez donc savoir que la plage de votre valeur est appropriée.)