2011-09-16 5 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. 
} 

しかし、私は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" はOKです。 – fannheyward