2つのCGFloat値があり、モジュロ結果を計算したいと思います。言い換えれば、valueAをvalueBにできるだけ配置した場合に何が残るかを知りたいのです。
だから私はちょうど試しました:
CGFloat moduloResult = valueB % valueA;
コンパイラは%について文句を言い、「バイナリ%に対する無効なオペランド」と表示します。何か案が?
2つのCGFloat値があり、モジュロ結果を計算したいと思います。言い換えれば、valueAをvalueBにできるだけ配置した場合に何が残るかを知りたいのです。
だから私はちょうど試しました:
CGFloat moduloResult = valueB % valueA;
コンパイラは%について文句を言い、「バイナリ%に対する無効なオペランド」と表示します。何か案が?
回答:
%は、intまたはlong、ではなくfloat、doubleです。
代わりにfmod()またはfmodf()からを使用できます<math.h>。
ベターはある<tgmath.h>ようCGFloatの発明によって提案します。
tgmath.h「ジェネリック型」(したがって「tg」)であるためmath.h、入力の型を指定して呼び出す関数を決定します。(例えば、呼び出しfloor(x)にtgmath.h含まれることは(から呼び出すmath.h)floorf(x)場合xでfloat、floor(x)あればxあるdouble、またはfloorl(x)場合xであるlong double。)
モジュロが入力として2intを必要とすることを正しく覚えている場合は、次のようなものが必要になります。
CGFloat moduloResult = (float)((int)valueB % (int)valueA);
valueBとvalueAが両方ともfloatであると仮定します