2010-09-16 20 views
8

Ho un NSTimeInterval memorizzato come doppio. Mi piacerebbe ottenere il numero di minuti che sono inietti del secondo valore usando l'operatore%.Utilizzo dell'operatore mod nell'app per iOS

minutes = secondValue % 60; 

dove minuti è dichiarato come double minutes

Il risultato è che XCode dice "operandi non validi a binario%"

Pensieri?

+0

Vedere http://stackoverflow.com/questions/1237778/how-do-i-break-down-an-newinterinter-in-data -months-days-hours-minutes-and –

+3

Oltre a far funzionare il modulo, questo non dà il risultato opposto di quello che vuoi? Se 'secondValue' è 123 (che funziona a 2 minuti, 3 secondi), il risultato di' secondValue% 60' sarà 3. Sembra che questa dovrebbe essere una divisione. – Chuck

risposta

12

Il PO cambiato la loro domanda, ecco la mia nuova risposta:

Si vuole fare minutes = floor(secondsValue)/60; Volete divisione int, non modulo.

+0

hai risolto un modulo divide - ma il tuo codice suggerito ha senso? –

+0

È meglio? – AlcubierreDrive

+0

.. è sicuramente più breve! –

13

Dalla serie C, sezione 6.5.5 Operatori moltiplicativi, paragrafo 2:

Gli operandi dell'operatore % avranno tipo intero.

+0

Questa risposta non ha senso poiché l'OP ha modificato la domanda. Non so se sia la causa di un downvote, non ne sono sicuro. –

4

Se SecondValue è un float o doppio, è possibile utilizzare il tipo C casting:

minutes = ((int)secondValue) % 60; 

EDIT:

(Se SecondValue è troppo grande per entrare in un int, questo non lo farà lavoro. Quindi è necessario sapere che l'intervallo del valore è appropriato)