2010-09-16 8 views
8

Mam NSTimeInterval, który jest przechowywany jako podwójne. Chciałbym uzyskać ilość minut, które są drugą wartością za pomocą operatora%.Używanie operatora mod w aplikacji iOS

minutes = secondValue % 60; 

gdzie minuta jest zadeklarowana jako double minutes

Powoduje to, że mówi "Nieprawidłowe XCode Argumenty na binarnym%"

myśli?

+0

Zobacz http://stackoverflow.com/questions/1237778/how-do-) -down-down-an-nstimeinterval-into-year -miesiące-dni-godziny-minuty-i –

+3

Oprócz uzyskania modulo do pracy, czy to nie daje odwrotnego rezultatu tego, czego chcesz? Jeśli 'secondValue' ma wartość 123 (co działa na 2 minuty, 3 sekundy), wynikiem' secondValue% 60' będzie 3. Wygląda na to, że powinien to być podział. – Chuck

Odpowiedz

12

PO zmienili swoje pytanie, więc tu jest mój nowy odpowiedź:

Chcesz zrobić minutes = floor(secondsValue)/60; Chcesz int, a nie dzielenie modulo.

+0

Naprawiono jeden podział modulo - ale czy sugerowany kod ma sens? –

+0

Czy to jest lepsze? – AlcubierreDrive

+0

.. to na pewno krócej! –

13

od standardu C sekcja 6.5.5 multiplikatywnej operatorzy akapit 2:

Argumenty operatora % ma typ całkowitą.

+0

Ta odpowiedź nie ma sensu, ponieważ OP edytował pytanie. Bez względu na to, czy to jest przyczyna, czy nie, nie jestem pewien. –

4

Jeśli secondValue jest pływak lub podwójne, można użyć typu C rzucania:

minutes = ((int)secondValue) % 60; 

EDIT:

(Jeśli secondValue jest zbyt duża, aby zmieścić się w int, to nie będzie Musisz wiedzieć, że zakres Twojej wartości jest odpowiedni.)