UIView alpha值比较错误

时间:2011-09-16 02:00:39

标签: iphone cocoa-touch uiview

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

代码:

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 个答案:

答案 0 :(得分:1)

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

#define TINY_DELTA (.0001f)

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

(实际上你已经在那里加倍。In general, use "0.5f" to use floats.在大多数硬件上通常会更快。)