Posted By: Quasimodo (Quasimodo) on 'CZprogram' Title: Re: Pokud nejaky javista nema co delat...y Date: Mon Dec 6 21:51:00 2004 > > Pravda, pro nacitani pascal floatu to jeste takova tragedie neni, pro > > ukladani > > Uaaaa... byl jsem nucen to jednou delat v Ccku... snaha byla, vzdal > jsem > to a nakonec vyresil tak, ze jsem z Pascal runtime vybagroval jak se tyto > parametry cpou do FPU a udelal to stejne a pak si to v C z FPU precet... > vim, > jsem prase...:-) (ale funkcni to bylo) > Taky si vsimni, ze tu bylo nekolik odpovedi, ze to bude vicemene stejne, jako jsem to napsal v C, ale kousek zdrojaku, ktery by do souboru ulozil float jako "real48" z nikoho nevypadnul. :-) Ten muj kousek kodu taky chodi, ale kamken urazu je v tom, dostat se k jednotlivym bytum v ukladanem floatu. Kdybych to musel delat v jave/C#, tak jedine co me napada, je nacpat to do nejakeho inmem souboru (snad je v nich obdoba C++ strstreamu) a pak to zase nacist jako pole bytu. Coz je ale dost drevacke reseni. Samozrejme, da se to delat i jen "matematikou", ale kdyz jsem to tenkrat zkousel v cecku, tak ztrata presnosti byla zarazejici. (A to se vsude jen delilo a nasobilo mocninama 2, takze TEORETICKY stacilo soupat doleva a doprava a vsechno bude krasne. Praxe ale byla trosku jina (nevim proc, ale kecalo do toho jakesi zaokrouhlovani)... Pokud by se na to chtel nekdo vaznejc podivat, tak ten pascal real48 ma v pameti zapis: smmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm eeeeeeee Zatimco C float (myslim ze to je IEEE 754) seeeeeee emmmmmmm mmmmmmmm mmmmmmmm s je sign, m mantisa a e exponent Takze primym presunem prislusnych bitu se to dela dost obstojne - pokud se k nim clovek dostane... :-) Nastesti s necim takovym se clovek potkava docela zridka. Je to jen takova moje slaboducha potreba rypat do modernich jazyku typu javaa, ze se dokonale zbavily nastroju, jak si snadno zpristupnit interni reprezentaci typu. Sice jsou zapotrebi neprilis casto, ale pak mohou resit jinak skoro neresitelne problemy. Jeste mam jeden podobny prikladek, jeste mene prakticky, ale bohuzel z praxe: potreboval jsem pro instanci jakesi tridy v programu zjistovat, jestli jista virtualni metoda je tataz, jako metoda nejakeho predka a pokud ne, vykonat obe a porovnat vysledky. Protoze nevim o zadnem nastroji uvnitr C++ (a ani v jave), ktery by tohle delal, musel jsem sahnout do tabulky virtualnich metod a hrozne nadaval na autora knihovny, ze musel zrovna tuhle metodu overridnout (jakesi polynomialni regrese nad urcitymi mnozinami bodu, knihovna si sama urcovala stupen polynomu podle vlozenych dat a k nim vymyslela tridy zahadnych vlastnosti), misto aby zalozil novou... Typeid pouzit neslo - krome bazove tridy jsem nemel k dispozici prototypy. To byl za celou moji praxi jedny pripad, kdy me skutecne zajimalo, kam a jak se k objektu lepi virtualni tabulky, ale zrovna tehdy to bylo docela nutne. Jak na takovy problem jit bez pointeru netusim. Nejspis napsat si tu knihovnu na regrese sam... bohuzel pro me je odhad optimalniho stupne polynomu pro prokladani cira magie. :-) - Clovek je nejpomalejsi zname zarizeni typu I/O. Quasimodo