Posted By: dzemen () on 'CZprogram' Title: Re: Zaokrouhlovani cisla typu Extended Date: Tue May 7 07:51:49 2002 > Dzemene, ty jsi nechodil na Kleckovou ? > MK Cau Zube! Ale chodil. Me slo spis o to, ze 2 pocitace delaji tu samou vec jednou dobre a podruhy blbe. ;-(( Samozrejme vim, ze i extended neumi nekdy bejt uplne presnej. Ale proc na jednom pocitaci to cislo jde a na druhym ne? Nejvetsi zrada je v tom, ze nektere pocitace tady ve firme to cislo 824.5 zobrazovaly spatne jako 824.4999999 a ted to uz delaji dobre a zaokrouhluji dobre. Konkretne jeden z nich je muj. ;-) A je sice hezky, ze muzu porovnavat abs(a-b)<EPSILON, kde EPSILON je nejake hodne male (1E-07) cislo, ale ja nepotrebuju porovnavat, potrebuju to cislo spravne ZAKROUHLIT !!! A opravdu chutovka je, kdyz vyjede na podniku ta sama sestava, z toho samyho programu, na cislech v radove desitkach milionu Kc na 2 pocitacich s rozdilem treba 5 haliru. ;-(((( Pouzivat pro menu cela cisla s posunutou desetinnou teckou (tj. treba 100x vetsi, nez je skutecnost a pri praci se pak deli 100) je sice reseni (i kdyz nakonec se stejne pracuje s float cislem, ktere se zaokrouhluje), ale ja uz mam existujici data. ;-(( Dzemen P.S.: A pasta je zubni, ne zbuni. ;-) Oprav si signaturu. > > Cau! > > > > 1) 1. pocitac, Celeron 333MHz, Windows 98 Second Edition > > > > A := 824.5 > > Writeln(A) vypise 824.49999999.... {OK, to bych jeste zkousnul} > > A := A + 0.000001; > > Writeln(A) vypise 824.500001 {Nevim, jestli je pocet nul spravne, ale > proste > > je to pres polovinu} > > Str(A:1:2, S); > > Val(S, A, Code); > > {Ted by melo byt v A cislo 824.5, protoze jsem "oriznul tu jednicku"} > > Writeln(A) vypise 824.49999999 ;-((( > > Takze trik s prictenim/odectenim "smeti" je na ...... > > > > 2) 2. pocitac, Celeron 333MHz, Windows NT 4.0 SP 6a > > > > - vsechno naprosto v pohode, tj. po prirazeni A := 824.5 a Writeln(A) ji > > proste na tech 824.5 vypise. Veskere dalsi operace "se smetim" take > > probehnou > > tak, jak to je spravne.... > > > > > > Program je napsan Delphi 5.0. > > A dela to same i s jinymi cisly, napr. 4346.035 (zobrazuje jako > > 4346.03499999). > > Chapal bych to, kdyby to bylo na obou pocitacich stejne dobre/spatne, ale > > program je ten samej a procesor taky, tak kde je chyba? ;-(( > > > > > > Dzemen