Kertoisko joku miten c:llä (ilman plussia) pystyy vertailemaan käyttäjän antamaa reaalilukua johonkin muuhuun reaalilukuun. Eli onko samat vai ei. Ongelma tulee, jos verrattavat ovat irrationaalilukuja eli päättymättömiä lukuja.
reaalilukujen vertailu
tebu
4366
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 4
Vanhimmat
hmm...
missä muodossa tuo reaaliluku on, ja miten se syötetään ?
jos on double/float niin sen vertailu menee normaalisti
if (l1 != l2)
Yleensä reaalilukuja ei pidä vertailla == tai != operaattoreilla koska tulos on epävarma.
Parempi tapa on laskea niiden erotus ja verrata sitä ennalta määritettyyn vakioon. Tarkoituksesta riippuen se voi olla vaikka 1/1000 tai jotakin ja jos erotus on tätä pienempi niin luvut tulkitaan samaksi.
if(abs( y - x ) < eps) //"sama" luku
Monesti tuo on tehty funktioksi isEqual(x,y) joka palauttaa tietyn arvon jos luvut on tarpeeksi lähellä toisiaan.
Kiitti! Oishan tuo pitänyt itekin tajuta. Ite mietin ratkaisua vaan vähän eri kautta. Tossa muuten pitää olla "fabs" "abs":n tilalla. "abs" on kokonais luvuille ja "fabs" reaaliluvuille!
>...muuten pitää olla "fabs"
Niin pitääkin. Terävä huomio. ;-)