Sobes.tech
Middle
247

İki onluq ədədi (float) bərabərlik üçün necə müqayisə edərsiniz?

AI-dan cavab

sobes.tech Süni İntellekt

İçəridəki təmsil xüsusiyyətləri və yuvarlama xətaları səbəbindən ondalık ədədləri sıx bərabərliyə (==) müqayisə etmək tövsiyə edilmir. Əvəzinə, epsilon (tolerantlıq) nəzərə alınaraq müqayisə edilir:

#include <cmath> // std::fabs üçün

bool bərabər_float(float a, float b, float epsilon = 0.00001f) {
    // Ədədlərin müsbət fərqini verilmiş tolerantlıqla müqayisə edirik
    return std::fabs(a - b) < epsilon;
}

// İstifadə nümunəsi:
// float x = 0.1f + 0.2f;
// float y = 0.3f;
// if (bərabər_float(x, y)) {
//     // Ədədlər bərabər sayılır
// }

epsilon dəyərinin seçimi dəqiqəlik tələblərə bağlıdır.