Sobes.tech
Middle
248

Эки сандарды (float) теңдик үчүн кандай салыштырса болот?

AIден жооп

sobes.tech AI

Жалпы алганда, ондук бөлүштүрүүчү сандарды катуу теңдик (==) менен салыштырбоо сунушталат, анткени алардын ички көрсөтүлүшүнүн өзгөчөлүктөрү жана мүмкүн болгон тегерекчелүү каталар бар. Анын ордуна, төзүмдүүлүк (epsilon) менен салыштыруу колдонулат:

#include <cmath> // std::fabs үчүн

bool бирдей_болуу_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 (бирдей_болуу_float(x, y)) {
//     // Сандар бирдей деп эсептелет
// }

epsilon маанисин тандоо тактыкка болгон конкреттүү талаптарга көз каранды.