2010-09-16 7 views
8

Tengo un NSTimeInterval que se almacena como un doble. Me gustaría obtener la cantidad de minutos que están dentro del segundo valor usando el operador%.Usando el operador de mod en la aplicación de iOS

minutes = secondValue % 60; 

donde minutos se declara como double minutes

El resultado es que XCode dice "los operandos no válidos a% binaria"

Pensamientos?

+0

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

+3

Además de hacer que el módulo funcione, ¿Esto no da el resultado opuesto de lo que quieres? Si 'secondValue' es 123 (que funciona en 2 minutos, 3 segundos), el resultado de' secondValue% 60' será 3. Parece que debería ser una división. – Chuck

Respuesta

12

El PO cambió su pregunta, así que aquí está mi nueva respuesta:

¿Quieres hacer minutes = floor(secondsValue)/60; ¿Quieres división int, no de módulo.

+0

ha arreglado una división de módulo, pero, ¿su código sugerido tiene sentido? –

+0

¿Eso es mejor? – AlcubierreDrive

+0

.. ¡ciertamente es más corto! –

13

de la norma C, sección 6.5.5 operadores multiplicativos, párrafo 2:

Los operandos del operador % tendrán tipo entero.

+0

Esta respuesta no tiene sentido ya que el OP editó la pregunta. Si eso es o no causa de un voto negativo, no estoy seguro. –

4

Si SecondValue es un flotador o doble, se puede utilizar el tipo C de calidad:

minutes = ((int)secondValue) % 60; 

EDIT:

(Si SecondValue es demasiado grande para caber en un int, esto no será trabajo. Por lo tanto, debe saber que el rango de su valor es el adecuado).

Cuestiones relacionadas