不断增加到 100% 的功能

Increasing ever towards 100 percentage function

所以。我有一个功能,它按我想要的方式工作,但它在长 运行 中可能会有点重,我想知道是否有更好的方法来做到这一点:

float getPval(float i) {
    float retunrVal = 0;
    for(int j = 0; j < i-1; j++) {
      returnVal += (100 - returnVal)/2;
    }
  returnVal += ((100-returnVal)/2)*(i - (int)i);
  Return returnVal;
}

基本上,如果我写:

getPval(1) I'll get 50 back.
getPval(1.5) would return 62,5
getPval(2) would return 75.
getPval(3) 87.5
getPval(4) 93.75
getPval(4.2) 94.375

等等... 无论数字多高,它永远不会 return 100,但它会越来越接近。

有没有比我的getPval(flaot)更好的函数?

现在,我知道是愚蠢的公式,但我不知道如何称呼这样的公式...

因此在循环的每一步,它都会找到 returnVal 和 100 之间的差值的一半。然后将其添加到 return 值。

另一种思考方式是求 100 (1 - 0.5^i)。在 java 中,您可以将其实现为

returnVal = 100. * ( 1.0 - Math.pow(0.5,Math.floor(i)) );
returnVal += ((100-returnVal)/2)*(i - (int)i);

您甚至可能会发现仅使用它会更好

returnVal = 100. * ( 1.0 - Math.pow(0.5,i) );

对于非整数参数将给出不同的结果。