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 !

Search the boards