Sobes.tech
Middle

Неге float сандарын салыштыруу туура эмес болушу мүмкүн жана ага кантип күрөшүү керек?

sobes.tech AI

AIден жооп

Нөктә менен бөлүнгөн сандарды (float) салыштырганда, алардын эс тутумда кандайча көрсөтүлүшүнө байланыштуу ката кетиши мүмкүн. Нөткө менен бөлүнгөн сандар IEEE 754 форматы боюнча сакталат, ал ар дайым так ондук бөлүктөрдү көрсөтө албайт, бул ката кетирүүдө алып келет.

Мисалы, 0.1 + 0.2 == 0.3 деп айтканда, ал кішкене таксыздыктарга байланыштуу false кайтарышы мүмкүн.

Бул маселени чечүү үчүн, адатта, сандарды кичинекей delta (epsilon) менен салыштырабыз:

const epsilon = 1e-9
func floatEquals(a, b float64) bool {
    return math.Abs(a - b) < epsilon
}

Мындайча айтканда, түз салыштыруу a == b ордуна, сандардын айырмасы жетиштүү кичинекейби деп текшерилет. Бул так эмес көрсөтүүнүн жана эсептөөлөрдө ката жыйналуусунун алдын алууга жардам берет.