Как правильно и стандартно сравнивать числа с плавающей запятой?

Каждый раз, когда я начинаю новый проект, и когда мне нужно сравнить некоторые переменные типа float или double, я пишу такой код:

if (fabs(prev.min[i] - cur->min[i]) < 0.000001 &&
    fabs(prev.max[i] - cur->max[i]) < 0.000001) {
        continue;
}

Затем я хочу избавиться от этих волшебных переменных 0.000001 (и 0.00000000001 для double) и fabs, поэтому я пишу встроенная функция и некоторые определения:

#define FLOAT_TOL 0.000001

Так что мне интересно, есть ли какой-нибудь стандартный способ сделать это? Может быть, какой-нибудь стандартный файл заголовка? Также было бы неплохо иметь ограничения с плавающей запятой и двойные (минимальные и максимальные значения)

28
задан mskfisher 11 May 2012 в 14:44
поделиться