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

Однако, в Qt есть функция qFuzzyCompare, которая сравнивает дробные числа и не принимает погрешность в качестве параметра. Кажется магия, а - нет:
Код :
Q_DECL_CONSTEXPR static inline bool qFuzzyCompare(float p1, float p2)
{
    return (qAbs(p1 - p2) <= 0.00001f * qMin(qAbs(p1), qAbs(p2)));
}
Вобщем это гораздо более унылое решение чем я пользую обычно (тут ведь есть магическое число).

И вот мне стало интересно что же есть аналогичного, хорошего в стандартной библиотеке, и нагуглил... islessequal и еще ряд похожих функций типа isgreater.
Первое что бросилось в глаза - отсутствие чего-то типа isequal (оно ведь самое полезное... а вместо больше/меньше я могу использовать соответствующий оператор).
Если глянуть внимательней - в C99 это были не функции, а макросы (в C++11 скорее всего constexpr).

По описанию:
The same as (x)<=(y):
true (1) if x is less than or equal to y.
false (0) otherwise.
Ну т.е. оно таки пытается сравнивать дробные числа на равенство и это может кончиться фэйлом.

зачем вообще нужны эти корявые islessequal? Я не могу придумать как их использовать...