我有以下代码:
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 = (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))
希望它有帮助,
乔
如果我理解这个问题,那么......
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
我不是 iphone 开发人员,但不是你要找的模数吗?
float valueCalculated = ((val1 / val2) * 100) % 101;
?
如果您只想通过“加权”将计算值限制为 0 到 100,您可以将该值除以它可能的最大值,然后乘以 100。这假设该值不是负数。