C: hogy tudom ellenőrizni, hogy egy float/double értéke 0. 0?
Programot kéne írnom, ahol a függvénynek addig kéne mennie, amíg egy double típusú változó értéke 0.0
kezdőértéke pl. 0.75
kivonok belőle 0.5-öt és 0.25-öt, papíron 0.0-nak kéne lennie, de ellenőriztem párszor és (bár kiíratásnál 0.000000-át) ad, az értéke nem 0.0
double közelítő értéket ad, de nem lehet ellenőrizni erre? csak valami 0-hoz nagyon közeli intervallumon tudom ellenőrizni?
(egyértelműen kezdő vagyok, nagyon bonyolult kódokkal kerüljetek, köszi <3)
Ja.
Lebegőpontos számokra sosem használunk ==-t, helyette egy Epszilonnyi eltérést vizsgálunk.
C#-ban így nézne ki (C-vel nem kínzom magam):
public bool Equals(this double a, double b, double epsilon = 0.00001) => Math.Abs(a-b) < epsilon;
public bool IsZero(this double a, double epsilon = 0.00001) => Equals(a, 0.0, epsilon);
Használata:
if (myDouble.IsZero())
// Do Something
vagy
if (myDouble.Equals(1.5))
// Do Something
vagy
if (myDouble.Equals(2.1, 0.01))
// Do Something
"double közelítő értéket ad, de nem lehet ellenőrizni erre? csak valami 0-hoz nagyon közeli intervallumon tudom ellenőrizni?"
A kettő ugyanaz. Úgy lehet leellenőrizni a közelítő értékre, hogy megvizsgálod a kívánt értéktől való eltérését.
Beépített függvény azért nincs erre, mert mit is értsünk közelítőleg egyenlőn, mekkora legyen az elfogadható hiba? Ezt előre nem lehet lefixálni, mindig az adott feladattól függ.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!