首先,我将视图的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.
}
有什么不对吗?
答案 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.在大多数硬件上通常会更快。)