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.