Reputation:
I have two CGFloat values, and want to calculate the modulo result. Or in other words: I want to know what's left if valueA is placed as much as possible into valueB.
So I just tried:
CGFloat moduloResult = valueB % valueA;
the compiler complains about the % and tells me: "invalid operands to binary %". Any idea?
Upvotes: 84
Views: 90630
Reputation: 67829
% is for int
or long
, not float
or double
.
You can use fmod()
or fmodf()
from <math.h>
instead.
Better is <tgmath.h>
as suggested by the inventor of CGFloat.
Upvotes: 207
Reputation: 5820
If I remember correctly modulo requires 2 ints as its input so you'd need something like:
CGFloat moduloResult = (float)((int)valueB % (int)valueA);
Assuming that valueB and valueA are both floats
Upvotes: 12