Podmínka - delphi
Dobrý den, prosím o radu. Můj program počítá body na známky, podle procent, avšak pokud je procento s desetiným místem, podle téhle podmínky nevypíše co má :
x:= jeprocent;
if (x>=89) and (x<=100) then edit4.text:=('1');
if (x>=76) and (x<=88) then edit4.text:=('2');
if (x>=63) and (x<=75) then edit4.text:=('3');
if (x>=46) and (x<=62) then edit4.text:=('4');
if (x>=0) and (x<=45) then edit4.text:=('5');
X a jeprocent jsou Double;
Takže abych to shrnul, pokud je např 91% vypíše do edit4 známku 1, avšak pokud je procento 91,1%, nevypíše nic, jak na to? Děkuji za radu,:)
konkretne ten 91,1 neviem preco ti nezobrazi, ale vseobecne pri pouziti realnych cisel, by si mal v podmienke kontrolovat iba ><, nikdy nie =
myslim tym toto
ak mas if(x>=89), tak sa moze stat, ze ak x je 89, teda ta hranicna hodnota, tak podmienka bude vyhodnotena sko nesplnena - suvisi to s reprezentaciou realnych cisel v PC
cize prve dva riadky by som upravil asi takto
To je nesmysl. Proc by nemohl požít = ? Minimalne je to spatne napsane,
kazdopande souhlasim s tim, ze to co tam má nepokrývá všechny intervaly a proto některá čísla neprojdou sítem, wo tom žádná - nicméně matoucích je 91,1 to zrovna zafungovat má.
To zanfunguje, ale nevidim duvod proc by tam nemelo bajt <=100, pokud to ma dobre udelane a X se pohybuje od <0,100>
to iba pri realnych cislach a vo vseobecnosti, snad vies, ze realne cisla su v pocitaci reprezontovane ako zaklad a exponent.
Resp, realnych cisel je nekonecne vela, ale pocitac dokaze zobrazit iba obmedzenu mnozinu, takze ked das do podmienky = moze sa stat, ze akurat to tvoje cislo pocitac v ramci datoveho typu zobrazit nevie.
jenze = ma porad svoje upotrebeni, proto tam ma jafi jednou interval < a jedno >= s tim rovná se. Tech cisel je asi bzilion, presto porad eixstuje konkretni JEDNO v realnem svete i v rep. pocitacu ktere te podmince odpovida.
ano pouzitie >=, <= je OK, ale pouzit iba = pri porovnavani realnych cisel moze dat nepredvidany vysledok ;)
ano, muze, ale za to zodpovida programator, to znaminko ma sve pouziti ;)
navic round(number,2) // nevim uz jak se to pise v delphi, ale v Oracle to znamena zaokrouhleni na 2 des cisla s rovnase je realne cislo presto naprosto definovane pres rovnase ;)
Round() zaokrouhluje na cele, RoundTo(cislo, pocet_mist) stejne jak v Oracle