2016-09-24 6 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; 
} 

Basicly、もしこのこれを行うには良い方法があった場合、私は思っていた、私は機能を持っている、と私はそれがしたいと、それは動作しますが、それは長期的には少し重い取得することができます私は書く:

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)ではなく、より良い機能がありますか?今

、愚かなので、ループの各段階で、それはreturnValと100の差の半分が、その後追加見つかっ

答えて

1

...私は知っているが、私は、このような式を呼び出すために何見当がつかない策定これを戻り値に設定します。

これについて考えるもう1つの方法は、100(1 - 0.5^i)を見つけることです。あなたも見つけるかもしれない

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

としてJavaでは、あなたはその優れただけで非整数の引数に異なる結果が得られます

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

を使用するために、これを実装します。

+0

恐ろしく、それは私が欲しかったものです。 – JavaApprentis

関連する問題