-1

我有以下代码:

float valueCalculated = (val1 / val2) * 100;

我想要做的是将 valueCalculated 的最大值限制为 100。

我相信我可以使用某种 if 语句来做到这一点,但这意味着更多的代码行。编辑// 情况并非如此,请参阅下面的答案。

谢谢,

斯图

4

7 回答 7

5

您的意思是像这样的“更多代码行”?

if (valueCalculated > 100) { valueCalculated = 100; }
于 2009-11-23T23:08:28.657 回答
1
float valueCalculated = MIN((val1 / val2) * 100, 100);
于 2012-08-28T15:48:55.753 回答
0
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))

希望它有帮助,

于 2009-11-23T23:13:13.660 回答
0

如果我理解这个问题,那么......

float valueCalculated = fminf((val1 / val2) * 100, 100);

...应该做你的要求。

但是,您是否担心负值,即 val1 或 val2 是否为负数,您是否希望将 valueCalculated 的可能值限制为 0-100?如果是这样,那么您可能想要...

float valueCalculated = fmaxf(fminf((val1 / val2) * 100, 100), 0);
于 2009-11-23T23:19:07.303 回答
0

那这个呢:

float valueCalculated = ((val1 / val2) * 100 < 100) ? (val1 / val2) * 100 : 100
于 2009-11-23T23:19:42.640 回答
-1

我不是 iphone 开发人员,但不是你要找的模数吗?

float valueCalculated = ((val1 / val2) * 100) % 101;

?

于 2009-11-23T23:09:25.877 回答
-1

如果您只想通过“加权”将计算值限制为 0 到 100,您可以将该值除以它可能的最大值,然后乘以 100。这假设该值不是负数。

于 2009-11-23T23:11:36.010 回答