Корректно ли такое сравнение вещественного числа с нулём?

На самом деле я знаю, как правильно сравнивать вещественные числа, но не понимаю как поведёт себя следующий код:

float x = 0.0;
...
if ( x == 0.0 ) { ... }


Поясню, что присвоение переменной нулевого значения происходит внутри другой функции, и отслеживать это (например, с помощью флагов) не лучший вариант: слишком много накладных расходов. А проверить необходимо именно на точно нулевое значение, потому что от этого зависит логика программы.

Буду благодарен, если расскажите про книги, в которых объясняются подобные тонкости =)
  • Вопрос задан
  • 1452 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если присваивается именно константный ноль, а не результат какого-либо вычисления, то сравнение с нулём безопасно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Так сравнивать безопасно. Единственный вопрос — может ли появиться ноль во время вычислений и не сломает ли это логику программы?
Лучше, конечно, для этого использовать не 0.0, а 0.0f.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы