Подтвердить что ты не робот

Оператор Mod в ios

искали mod-оператор в ios, как и % в c, но не повезло найти его. Попробовал ответ в этой ссылке, но он дает ту же ошибку. У меня есть переменная float 'rotationAngle', угол которой продолжает увеличиваться или уменьшаться на основе движения пальцев пользователя. Что-то вроде этого:

if (startPoint.x < pt.x) {
    if (pt.y<936/2) 
        rotationAngle += pt.x - startPoint.x;
    else
        rotationAngle += startPoint.x - pt.x;   
    }
    rotationAngle = (rotationAngle % 360);
}

Мне просто нужно убедиться, что rotationAngle не пересекает ограничение +/- 360. Любая помощь любому телу. Спасибо

4b9b3361

Ответ 1

Вы можете использовать fmod (для double) и fmodf (для float) для math.h:

#import <math.h>

rotationAngle = fmodf(rotationAngle, 360.0f);

Ответ 2

Используйте функцию fmod, которая выполняет модуль с плавающей точкой, для определения см. здесь: http://www.cplusplus.com/reference/clibrary/cmath/fmod/. Примеры того, как это работает (с возвращаемыми значениями):

fmodf(100, 360); // 100
fmodf(300, 360); // 300
fmodf(500, 360); // 140
fmodf(1600, 360); // 160
fmodf(-100, 360); // -100
fmodf(-300, 360); // -300
fmodf(-500, 360); // -140

fmodf принимает "float" в качестве аргументов, fmod принимает "double" и fmodl занимает "double long", но все они делают то же самое.

Ответ 3

Я передал его сначала int

rotationAngle = (((int)rotationAngle) % 360);

если вы хотите использовать большую точность

float t = rotationAngle-((int)rotationAngle);
rotationAngle = (((int)rotationAngle) % 360);
rotationAngle+=t;