关于iphone:UIView alpha值比较错误

 2019-09-19 

UIView alpha value compare error

首先,我将视图的alpha设置为0.4,我想稍后在aView.alpha == 0.4时执行某些操作,但比较失败。

码:

1
2
3
4
5
aView.alpha = 0.4;
...//never changes aView.alpha.
if (aView.alpha == 0.4) {
    //this compare failed.
}

但是,当我将alpha设置为0.5时,它可以工作!

1
2
3
4
5
aView.alpha = 0.5;
...
if (aView.alpha == 0.5) {
    //it's OK.
}

哪里不对了?


永远不要使用相等比较浮点数。 它可以工作(显然"正零"和"负零"是精确值)但你需要检查是否存在非常小的差异,而不是它们是相等的。 喜欢:

1
2
3
4
5
#define TINY_DELTA (.0001f)

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

(实际上你在那里加倍。一般情况下,使用"0.5f"来使用浮点数。在大多数硬件上通常会更快。)