Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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,:)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
konkretne ten 91,1 neviem preco ti nezobrazi, ale vseobecne pri pouziti realnych cisel, by si mal v…
nl12345 25.02.2012 11:31
nl12345
podmienke kontrolovat iba ><, nikdy nie = To je nesmysl. Proc by nemohl požít = ? Minimalne je to s…
AZOR 25.02.2012 11:53
AZOR
Proc by nemohl požít = ? to iba pri realnych cislach a vo vseobecnosti, snad vies, ze realne cisla…
nl12345 25.02.2012 14:37
nl12345
jenze = ma porad svoje upotrebeni, proto tam ma jafi jednou interval < a jedno >= s tim rovná se. Te…
AZOR 25.02.2012 15:04
AZOR
ano pouzitie >=, <= je OK, ale pouzit iba = pri porovnavani realnych cisel moze dat nepredvidany vys…
nl12345 25.02.2012 15:43
nl12345
ano, muze, ale za to zodpovida programator, to znaminko ma sve pouziti ;) navic round(number,2) //… nový
AZOR 25.02.2012 15:52
AZOR
Round() zaokrouhluje na cele, RoundTo(cislo, pocet_mist) stejne jak v Oracle poslední
Jan Fiala 25.02.2012 16:38
Jan Fiala

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

if (x>88,5) and (x<101) then edit4.text:=('1');
if (x>75,5) and (x<88,5) then edit4.text:=('2');

podmienke kontrolovat iba ><, nikdy nie =

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

x<101

To zanfunguje, ale nevidim duvod proc by tam nemelo bajt <=100, pokud to ma dobre udelane a X se pohybuje od <0,100>

Proc by nemohl požít = ?

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, 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 ;)

Zpět do poradny Odpovědět na původní otázku Nahoru