web-dev-qa-db-ja.com

Objective-C / Cocoa Touchでモジュロ演算を行う方法は?

2つのCGFloat値があり、モジュロ結果を計算したい。または、言い換えると、valueAがvalueBに可能な限り配置されている場合、何が残っているのかを知りたいのです。

だから私は試しました:

CGFloat moduloResult = valueB % valueA;

コンパイラは%について文句を言い、「バイナリ%に対する無効なオペランド」を教えてくれます。何か案が?

81
HelloMoon

%はintまたはlongではなく、floatまたはdoubleを表します。

代わりに_<math.h>_からfmod()またはfmodf()を使用できます。

より良いのは _<tgmath.h>_ as CGFloatの発明者によって提案された です。

201
mouviciel

モジュロの入力が2つのintを必要とすることを正しく覚えている場合、次のようなものが必要になります。

CGFloat moduloResult = (float)((int)valueB % (int)valueA);

ValueBとvalueAが両方ともfloatであると仮定します

10
James Raybould