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であると仮定します