Определение DBL_EPSILON не так.Это разница между следующим представимым числом после 1 и 1 (ваше определение предполагает, что режим округления установлен на «к 0» или «к минус бесконечности», это не всегда так).
Это что-то полезноеесли вы знаете достаточно о численном анализе.Но я боюсь, что это место не лучшее, чтобы узнать об этом.В качестве примера, вы можете использовать ее при построении функции сравнения, которая скажет, равны ли приблизительно два числа с плавающей запятой примерно так:
bool approximatively_equal(double x, double y, int ulp)
{
return fabs(x-y) <= ulp*DBL_EPSILON*max(fabs(x), fabs(y));
}
(но не зная, как определить ulp, вы потеряетесь;и эта функция, вероятно, имеет проблемы, если промежуточные результаты являются ненормированными; вычисление fp сложно сделать надежным)