次のコードがあります。
float valueCalculated = (val1 / val2) * 100;
私ができるようにしたいのは、valueCalculated の最大値を 100 に制限することです。
ある種の if ステートメントを使用してこれを行うことができると思いますが、これはさらに多くのコード行を意味します。編集 // これは当てはまりません。以下の回答を参照してください。
ありがとう、
ストゥ
次のコードがあります。
float valueCalculated = (val1 / val2) * 100;
私ができるようにしたいのは、valueCalculated の最大値を 100 に制限することです。
ある種の if ステートメントを使用してこれを行うことができると思いますが、これはさらに多くのコード行を意味します。編集 // これは当てはまりません。以下の回答を参照してください。
ありがとう、
ストゥ
このように「さらに多くのコード行」を意味しますか?
if (valueCalculated > 100) { valueCalculated = 100; }
float valueCalculated = MIN((val1 / val2) * 100, 100);
質問を理解したら...
float valueCalculated = fminf((val1 / val2) * 100, 100);
...あなたの求めていることをするべきです。
ただし、負の値について心配していますか。つまり、val1またはval2が負である可能性があり、valueCalculatedの可能な値を0〜100に制限しますか。もしそうなら、あなたは望むかもしれません...
float valueCalculated = fmaxf(fminf((val1 / val2) * 100, 100), 0);
これはどうですか:
float valueCalculated = ((val1 / val2) * 100 < 100) ? (val1 / val2) * 100 : 100
float valueCalculated = (float temp = (val1 / val2) * 100) > 100 ? 100 : temp;
しかし、関数の方が良いと思います。関数または単純なマクロで実行できます。
#define MAX(m, toset) toset = (toset > m ? m : toset)
MAX(100, valueCalculated);
私はあなたの質問をよりよく理解したと思います:
valueCalculated = MAX(100, (val1 / val2) * 100);
どこ
#define MAX(max, val) (((val) > (max)) ? (max) : (val))
お役に立てば幸いです、
ジョー
私は iphone 開発者ではありませんが、探しているのは modulo ではありませんか?
float valueCalculated = ((val1 / val2) * 100) % 101;
?
計算された値を「重み付け」して 0 から 100 に制限したい場合は、その値を可能な最大値で割り、100 を掛けます。これは、値が負でないことを前提としています。