2014-05-08 31 views
2

正如標題所述,我想從1開始,一直減少到0.01,一直減少到零。將浮動從1減小到0,以0.01爲增量

問題是,我正在使用浮動,並且我不斷得到值,如0.5000000001

+2

劃分值請提供你想要達到的目的更多的上下文;也許'浮動'不適合你的任務。 – Codor

+2

0.01不能用二進制浮點數表示,所以你應該使用int而不是 –

+1

這與'int'從'25'開始並希望從'2.5'一直減少到'0'類似。這是不可能的,因爲你的遞減值是不可表示的,當你接近它(用可表示的東西)時,它不會完美地分割你的值。 – Mankarse

回答

10

只需使用一個int,在100跌落開始到0和100.0

for (int i=100; i>=0; --i) 
{  
    float f = i/100.0f; 
    ... 
} 
+0

這些操作並不會影響性能,但使用浮點索引'i'從'100.0f'下降到'0.0f'可能會更快。此外,請注意'float f = i/100.0'會使編譯器生成一個雙精度分割,然後轉換爲單精度。聲明'float f = i/100.0f;'是等價的(因爲複雜的原因,編譯器可能不知道如何利用)並且更直接地編譯。 –

+0

非常感謝,像魅力一樣工作。 – Ogen