我有以下计算:

float value = MY_VALUE;

float percentage = (value - MIN)/(MAX - MIN);
if (percentage < 0)
   percentage = 0;
if (percentage > 1)
   percentage = 1

我只是想知道 Objective-C 或 C 中是否存在某种方法来帮助实现这一点,例如一种将“值”浮点数舍入到 MIN 和 MAX 边界之间的方法。

最佳答案

不。

另一方面,您可能应该更新您的代码,以便防止可能的除以零:

float den = (value - MIN);
float num = (MAX - MIN);
float percentage;

if(den) {
  percentage = num / den;
  if (percentage < 0.0f ) {
    percentage = 0.0f;
  } else if (percentage > 1.0f) {
    percentage = 1.0f;
  } else {
    printf("Percentage: %3.2f",percentage);
  }
} else {
  percentage = 0.0f;
  printf("DIVIDE BY ZERO ERROR!");
}

还有,小心。甲骨文就一段非常相似的代码起诉谷歌。您可能需要重新考虑将其公开发布:

http://developers.slashdot.org/story/12/05/16/1612228/judge-to-oracle-a-high-schooler-could-write-rangecheck

关于objective-c - 计算两个边界之间值的百分比的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10728464/

10-11 17:13