Sobes.tech
Middle

Kako biste uporedili dva broja sa pokretnom zarezom (float) na jednakost?

sobes.tech АИ

Одговор од АИ

Nije preporučljivo porediti brojeve sa pokretnim zarezom na strogu jednakost (==) zbog osobina njihove interne reprezentacije i mogućih grešaka zaokruživanja. Umesto toga, koristi se poređenje uzimajući u obzir toleranciju (epsilon):

#include <cmath> // Za std::fabs

bool su_isti_float(float a, float b, float epsilon = 0.00001f) {
    // Poređujemo apsolutnu razliku brojeva sa datom tolerancijom
    return std::fabs(a - b) < epsilon;
}

// Primer upotrebe:
// float x = 0.1f + 0.2f;
// float y = 0.3f;
// if (su_isti_float(x, y)) {
//     // Brojevi se smatraju jednakim
// }

Izbor vrednosti epsilon zavisi od specifičnih zahteva za preciznošću.