Только сегодня я наткнулся на стороннее программное обеспечение, которое мы используем, и в их примере кода было что-то в этом роде:
// 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
?