Ошибка сравнения альфа-значения UIView - PullRequest
0 голосов
/ 16 сентября 2011

Сначала я установил альфа-представление для 0,4, я хочу выполнить некоторые действия позже, когда aView.alpha == 0,4, но сравнение не удалось.

Код:

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 Ответ

1 голос
/ 16 сентября 2011

Никогда не сравнивайте числа с плавающей точкой, используя равенство.Это может сработать (очевидно, «положительный ноль» и «отрицательный ноль» являются точными значениями), но вам нужно проверить, что есть очень маленькая разница, а не то, что они равны.Например:

#define TINY_DELTA (.0001f)

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

(На самом деле у вас есть удвоения. Как правило, используйте «0.5f» для использования чисел с плавающей запятой. Обычно на большинстве аппаратных средств он работает быстрее.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...