不断增加到 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) );
对于非整数参数将给出不同的结果。
所以。我有一个功能,它按我想要的方式工作,但它在长 运行 中可能会有点重,我想知道是否有更好的方法来做到这一点:
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) );
对于非整数参数将给出不同的结果。