Kezdőoldal » Számítástechnika » Programozás » C: hogy tudom ellenőrizni,...

C: hogy tudom ellenőrizni, hogy egy float/double értéke 0. 0?

Figyelt kérdés

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)



2017. nov. 22. 12:02
 1/3 anonim ***** válasza:

Ja.

Lebegőpontos számokra sosem használunk ==-t, helyette egy Epszilonnyi eltérést vizsgálunk.

2017. nov. 22. 12:34
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

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

2017. nov. 22. 12:48
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:

"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.

2017. nov. 22. 13:44
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!