¿Cómo hacer una operación de módulo en aim-c / cocoa touch?


82

Tengo dos valores CGFloat y quiero calcular el resultado del módulo. O en otras palabras: quiero saber qué queda si valueA se coloca tanto como sea posible en valueB.

Así que intenté:

CGFloat moduloResult = valueB % valueA;

el compilador se queja del% y me dice: "operandos no válidos en% binario". ¿Alguna idea?

Respuestas:


204

% es para into long, no floato double.

Puede usar fmod()o fmodf()desde en su <math.h>lugar.

Mejor es lo <tgmath.h>que sugiere el inventor de CGFloat .


2
¿Está disponible tgmath.h en el iphone? Me pregunto porque nunca tuve que incluir matemáticas. Viene con el marco de la base, creo.

Además, ¿cuál es la diferencia entre tgmath.hy math.h de todos modos?
user4951

4
Jim: tgmath.hes de "tipo genérico" (de ahí el "tg") y, por lo tanto, decidirá qué math.hfunción llamar dado el tipo de su entrada. (Por ejemplo, llamar floor(x)con tgmath.hincluido llamará (desde math.h) floorf(x)si xes a float, floor(x)si xes a double, o floorl(x)si xes a long double.)
George WS

10

Si recuerdo correctamente, el módulo requiere 2 entradas como entrada, por lo que necesitaría algo como:

CGFloat moduloResult = (float)((int)valueB % (int)valueA);

Suponiendo que valueB y valueA son ambos flotantes


3
Esto, por supuesto, no le dará la respuesta correcta debido al redondeo.
Fishinear
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.