Posted By: pivson (Pijte pivo, je zdrave !!!) on 'CZprogram'
Title: Re: Zaokrouhlovani cisla typu Extendedyn
Date: Fri May 10 15:26:23 2002
> Diky, tohle jsem ani neznal
Chlape, jak teda muzes diskutovat o floatech :) ? To je skutecne zaklad.
Doufam ze jsem it zhruba osvetlil, PROC tu ta konstanta je, a proc ma hodnotu
takovou, jakou ma.
> Byla rec o pascalu.
A ? Ten to akorat dela za tebe. Vetsina kompieru cecka ma volbu neco ve
smyslu 'flaot consisntency'. A ta rika, jesli ma VKLADAT do tvyho kodu ZCELA
automaticky
if (a=b) -> if (abs(a-b)<EPSILON)
a podobne. Packal tohle dela snad porad, nevim jesli se to da vubec vypnout.
Pokud napises kod:
a=5;
b=(float)7-float(2);
(predpokladam, ze to kompiler nespocita, ale bude to provadet)
Tak se ulozi petka do floatu. Zde VZNIKNE CHYBA. To same pro 7 a 2. Ty se
odectou a vysledek se ulozi.
Jenze se neodecitalo 7 a 2 ale 6.999999999blabla a 2.00000000blable (treba).
Tudiz, kdyz to porovnas s 5kou (resp. 4.9999999999....) tak to NEBUDE rovno.
Prave protoze FPU vyjadruje cisla JINAK.
Musis je od sebe odecist a zjistit rozdil. Jeli rozdil mensi, nez urcita
hodnota, pak nemuzes s jistotou rici, zdali jsou si rovny, protoze jejich
'puvod' je v JINY CISELNY SOUSTAVE.
Pokud bys jako 'zdroj' cisel dodaval cisla, ktery lzde PRESNE vyjadriv v teto
soustave, pak by chyba nenastavala zadna (az na zaokrouhlovani, ale to je
uplne JINA vec).
> if (abs(a-b) < FLT_EPSILON) then ...
> nefungovalo, pokud budu mit nejaky pekny exponent. Nebo jestli ano, tak se
> strasne stydim, najdu si skripta programovani a znovu si prectu zaklady,
> abych
Ale fungovalo.... Najdi si skripta, zalez do kouta a styd se :) STaci kdyz se
poodivas na specifikaci a ulozeni flaotu i Intela, nemusis louskat cely
skripta.
Jak by bylo krasny kdyby float byl ulozenej ve formatu jako mi piseme. To by
se krasne tisknul/cetl :o) Pokud chces presne zobrazit float na obrazovce, tak
kod na zobrazeni neni 2x jednoduchej. Ani omylem. To protoze nemuzes zistat
binarni podobu exponentu. Takze za printf("%f") je celkem dost radku kodu.
Hodne knihoven to resi nepresnou cestou...
A jeste jedna vec na kterou muzes selkym rozumem prijit. 64 bit real, ma na
exponentcharakteristiku - on to neni exponent :) vyhrazeno 15 bitu. To
odpovida rozsahu neco okolo +-10^32768... Nicmene, realny rozsah je +-10^308.
Otazka tydne: Proc ? :) Zkus si odpovedet :o))))) A druha otazka: proc je
normalizovany cislo 0.5-1, kdyz my mame 0-1 ? :))) ?
Pivson I a posledni, z bozi vule pivar
A co budou delat cesi ???
Deme na pivo !