Назад к вопросам
Middle
87
questionbank

Как бы вы сравнили два числа с плавающей запятой (float) на равенство?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Сравнивать числа с плавающей запятой на строгое равенство (==) не рекомендуется из-за особенностей их внутреннего представления и возможных ошибок округления. Вместо этого используется сравнение с учетом допуска (epsilon):

#include <cmath> // Для std::fabs

bool are_equal_float(float a, float b, float epsilon = 0.00001f) {
    // Сравниваем абсолютную разницу чисел с заданным допуском
    return std::fabs(a - b) < epsilon;
}

// Пример использования:
// float x = 0.1f + 0.2f;
// float y = 0.3f;
// if (are_equal_float(x, y)) {
//     // Числа считаются равными
// }

Выбор значения epsilon зависит от конкретных требований к точности.