2011-09-16 24 views
0

起初,我設置視圖的阿爾法到0.4,我想一些動作後,當aView.alpha == 0.4,但比較失敗。UIView的阿爾法值進行比較,誤差

代碼:

aView.alpha = 0.4; 
...//never changes aView.alpha. 
if (aView.alpha == 0.4) { 
    //this compare failed. 
} 

但是,當我設置alpha爲0.5,它的工作原理!

aView.alpha = 0.5; 
... 
if (aView.alpha == 0.5) { 
    //it's OK. 
} 

什麼不對?

回答

1

決不使用相等比較浮動。它可以工作(顯然「正零」和「負零」是確切的值),但你需要檢查有一個非常小的差異,而不是他們是平等的。像:

#define TINY_DELTA (.0001f) 

if(fabsf(floatA - floatB) < TINY_DELTA) { 
    // equal for all intensive porpoises 
} 

(。其實你有雙打有In general, use "0.5f" to use floats.它通常是快於大部分硬件在那裏)

+0

謝謝,「0.4F」就行了。 – fannheyward