Как раз сегодня я наткнулся на стороннее программное обеспечение, которое мы используем, и в их образце кода было что-то вроде этого:
// Defined in somewhere.h
static const double BAR = 3.14;
// Code elsewhere.cpp
void foo(double d)
{
if (d == BAR)
...
}
Я знаю о проблеме с плавающей запятой и их представление, но это заставило меня задуматься, есть ли случаи, когда float == float
подойдет? Я не спрашиваю, когда может работать, но когда это имеет смысл и работает.
Кроме того, как насчет вызова типа foo (BAR)
? Будет ли это всегда сравниваться одинаково, поскольку они оба используют одну и ту же static const BAR
?