Назад к вопросам
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 зависит от конкретных требований к точности.