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"来使用浮点数。在大多数硬件上通常会更快。)