Posted By: pivson (Pijte pivo, je zdrave !!!) on 'CZprogram'
Title:     Re: Zaokrouhlovani cisla typu Extendedyn
Date:      Sat May 11 11:36:58 2002

> Snadno - znam teorii a ze neznam jeden konretni header sice mozna je smutny,
> ale nemyslim, ze me to hned diskvalifikkuje.
Ok, sorry :)

> Zahnals me do defensivy. Protoze reagujes na muj post, tak mam dojem, ze za 
> toho idiota co neumi zaklady povazujes me. Tudiz mi to ted nedalo a misto 
> hledani ve skriptech jsem si to zkusil napsat:
Ne, ale motaj se tu dohromady _2_ veci. Tak na to pozor.

> int main(int argc, char *argv)
> {
>         float a,b,c, d;
>         scanf("%f %f %f", &a, &b, &c);
>         if ((a * b - c) < FLT_EPSILON)
>                 printf ("MATCHn");
>         else
>                 printf ("DON'T MATCHn");
>         d = a * b - c ;
>  
>         printf("%15.10fn", d);
>         return 0;
> }; 
Ted sem motas neprensot zpusobenou __vypoctem__, nikoliv neprenost, ktera 
vznika pri __konverzi__ cisel. Tedy narazis na jinou vec nez jsem (minimalne 
ja) vysvetloval.
 
 
> Takze na porovnani dvou cisel pomoci te konstanty muzu snad uz klidne 
> zapomenout, ne? Exponent se proste pouzije a je jedno, jestli je binarni
> nebo 
> dekadickej. 
Mluvis o necem jinym. Tohle je zavisli na KONKRETNI veci - a rozhodne nemuzes 
prijit s nejakou 'konstatnou' protoze ve vetsim vzorci se ti tyhle neprenosti 
nabali pekne na sebe. Krom toho je zcela logycky, ze pri velkych cislech bude 
nepresnot daleko vetsi. Pokud mas presnost jen 'par' cifer a pohybujes se 
nekde na ~25 cifrach, pak je chyba celkem slusne velka.

Jak uz rekl Rat, pletou se tu dohromady 2 zcela rozdilny veci. Dovolim si 
pripomenou puvodni post:

----
A := 824.5
Writeln(A) vypise 824.49999999.... {OK, to bych jeste zkousnul}
----

1. Nevyskytuje se zde zadne operace, ktere zpusobuji velkou chybu
2. Pohybujeme se v rozumny abs. velikosti (rady) s ohledem na prenost
3. Jedna se prakticky o nacteni/vystup cisla

Ktera z 2 hlavnich nepresnosti zde vystupuje ? A na tohle je presne EPSILON 
konstanta. NE na to aby ti pokryla chybu ve vypoctech (nepresnost). Ta je 
zavisla na moooooc faktorech. A podle mne nemuzes dat univerzalni recept, jak 
tuto chybu 'zohlednit'. Nekde to bude to co si psal ty (mimochodem, 
nepolemizoval jsme o tom ze by to byla blbost, aspon jsem si nevsim ze bych to 
tvrdil). 

Mimochodem, ve floatech se v naprosty vetsine pocita spise s cislama "blizky" 
~0-1, ne nekde exponenty e20 a pod. Prave z toho duvodu, ze i mala banalita 
znamena 'uplne jinej vysledek' - v absolutnim meritku.... Mimo jiny prave 
proto existujou knihovny, co pocitaj na nekolik stovek platnejch mist. Pro 
nejlepsi vyuziti presnosti nema smysl se pohybovat ve vysokych radech.

 

Pivson I a posledni, z bozi vule pivar

    A co budou delat cesi ???
                                     Deme na pivo !

Search the boards