На самом деле я знаю, как правильно сравнивать вещественные числа, но не понимаю как поведёт себя следующий код:
float x = 0.0;
...
if ( x == 0.0 ) { ... }
Поясню, что присвоение переменной нулевого значения происходит внутри другой функции, и отслеживать это (например, с помощью флагов) не лучший вариант: слишком много накладных расходов. А проверить необходимо именно на точно нулевое значение, потому что от этого зависит логика программы.
Буду благодарен, если расскажите про книги, в которых объясняются подобные тонкости =)