У меня есть два значения CGFloat, и я хочу рассчитать результат по модулю. Или, другими словами: я хочу знать, что останется, если valueA поместить как можно больше в valueB.
Итак, я просто попробовал:
CGFloat moduloResult = valueB % valueA;
компилятор жалуется на% и говорит мне: «недопустимые операнды для двоичного%». Есть идеи?
tgmath.h
является «универсальным типом» (отсюда и «tg») и, таким образом, решает, какуюmath.h
функцию вызывать, учитывая тип вашего ввода. (Например, вызовfloor(x)
сtgmath.h
включенным вызовом вызовет (изmath.h
),floorf(x)
еслиx
это afloat
,floor(x)
еслиx
этоdouble
илиfloorl(x)
еслиx
это along double
.)Если я правильно помню, по модулю требуется 2 int в качестве ввода, поэтому вам понадобится что-то вроде:
CGFloat moduloResult = (float)((int)valueB % (int)valueA);
Предполагая, что valueB и valueA оба являются плавающими
источник