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.