Сравнение действительных чисел
В практических задачах обычно говорят о сравнении действительных чисел с выбранной точностью. Это означает, что если два числа отличаются друг от друга незначительно, то их можно считать равными. Если же отличие превышает некоторую величину, то числа будем считать различными.
На рисунке показана числовая прямая с точкой A и интервалом, где расположены числа, примерно равные A, при данной точности:

Из этих соображений вытекают такие реализации функций сравнения:
double eps = 0.001;
// Функция проверки на равенство при заданной точности
// Возвращает true, если разность двух чисел достаточно мала,
// чтобы ей пренебречь, false - в противном случае.
bool are_equal (double a, b) {
return (fabs(b-a) <= eps);
}
// Возвращает true, если число a больше b даже с учетом точности.
bool is_greater (double a, b) {
return (a > (b + eps));
}
// Возвращает true, если число a меньше b.
bool is_less (double a, b) {
return (a < (b - eps));
}
Последнее изменение: Суббота, 15 Август 2020, 02:34