2010-09-16 1 views
8

У меня есть NSTimeInterval, который хранится как двойной. Я хотел бы получить количество минут, которые находятся во втором значении, используя оператор%.Использование оператора mod в приложении iOS

minutes = secondValue % 60; 

где минут объявлен double minutes

В результате получается, что XCode говорит "Недействительные операнды бинарной%"

Мысли?

+0

См. http://stackoverflow.com/questions/1237778/how-do-i-break-down-an-nstimeinterval-into-year -months-days-hours-minutes-and –

+3

Помимо того, что модуль работает, не дает ли это противоположный результат того, что вы хотите? Если 'secondValue' составляет 123 (который работает до 2 минут, 3 секунды), результат' secondValue% 60' будет равен 3. Кажется, что это должно быть деление. – Chuck

ответ

12

ОП изменил свой вопрос, так вот мой новый ответ:

Вы хотите сделать minutes = floor(secondsValue)/60; Вы хотите ИНТ деление, а не модуль.

+0

вы исправили один модульный разрыв - но, имеет ли смысл ваш предлагаемый код? –

+0

Это лучше? – AlcubierreDrive

+0

.. это конечно короче! –

13

От стандарта C, раздел 6.5.5 мультипликативные операторы, пункт 2:

Операнды оператора % должен иметь целочисленный тип.

+0

Этот ответ не имеет смысла, так как ОР редактировал вопрос. Независимо от того, является ли это причиной нисходящего потока, я не уверен. –

4

Если SecondValue с плавающей точкой или двойной, вы можете использовать тип C литье:

minutes = ((int)secondValue) % 60; 

EDIT:

(Если SecondValue слишком большой, чтобы поместиться в междунар, это не будет так что вам нужно знать, что диапазон вашей ценности подходит.)