2016-09-24 146 views
0

所以。我有一個功能,和它的作品,因爲我也想,但它可以從長遠來看會有點重,這也是我想知道是否有更好的方法來做到這一點:增加到100百分比功能

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 

等等... 無論一批有多高,它永遠不會返回100,但它會變得越來越緊密。

有沒有更好的功能,而不是我的getPval(Flaot)?

現在,愚蠢的制定我知道,但我不知道什麼叫這樣一個公式......

回答

1

所以在迴路中的每一個步驟,找到差值的一半的returnVal和100。然後加這到了返回值。

想想這個的另一種方法是找到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)); 

,這將給非整數參數不同的結果。

+0

太棒了,那正是我想要的:) – JavaApprentis