mulaz @ 02.01.2008. 16:10
http://forums.thedailywtf.com/forums/thread/140971.aspx

ovde sam nasao, jel moze neko da potvrdi, neko ko ima excel?

Citat:
How to recreate
· Open Excel 2007 SP1.
· Make new Excel 2007 spreadsheet.
· Enter '6' in any field.
· Go one field down, enter '=' > arrow up > '-0,2' (*)
· Copy/paste formula many times below it.
· Wait until the count hits 0... or rather, -3,1E-15.
· Expand cell width and # of significant numbers to see the real number: -0,000000000000003053113317719180 !!
degojs @ 02.01.2008. 18:30
Jeste, ali --- zar to nije očekivano ponašanje pri radu sa floating-point brojevima?

Ako otvoriš VS i kreneš

double a = 6.0;
double b = -0.2;

a += b; Console.WriteLine( a );
a += b; Console.WriteLine( a );
a += b; Console.WriteLine( a );
...

Dobićeš isto ponašanje.

To je i razlog zašto se floating-point brojevi ne porede tipa if ( a==b ) već se uvek uzima u obzir tražena tačnost..


icobh @ 02.01.2008. 19:25
Tačno tako. Float brojevi se ponašaju drugačije. Znam, kad programiram, da moram oduzimati 2 float broja, pa ako im je apsolutna razlika manja od npr. 0.00001, onda su ta 2 broja jednaka itd...

Kod float brojeva nema a==b!
marinowski @ 02.01.2008. 20:37
Takođe, kod sukcesivnog oduzimanja greška se sve više povećava. Zato je u numeričkoj matematici uobičajena praksa da se umesto (na prvi pogled) zdravorazumskog
an = an-1 + delta
koristi
an = a0 + n * delta
zbog smanjenja greške.

nice try
mulaz @ 02.01.2008. 22:08
da da.. ali pricamo o excellu... ako ima u jednacini brojeve napisane na jedno mesto, reda 10^(-1), i rezultat koji ima prvih 15 mesta '0', onda bi morao da napise '0'. Ako bi ovu racunicu upotrebljavali recimo sa 'starim' dinarima, pomnozili to sa cenom recimo hleba od nekoliko stotina milijardi i jos sa nekoliko milijona ljudi, dobili bi neke stvarno cudne brojke za 'nulu'...
degojs @ 02.01.2008. 23:22
U tom slučaju možeš da uključiš (isključiš) opciju "Precision as Displayed".
Ivan Dimkovic @ 03.01.2008. 09:42
Citat:
mulaz
ovde sam nasao, jel moze neko da potvrdi, neko ko ima excel?


Mogu samo da potvrde da je cova koji je "otkrio" bag informaticki nepismen.

Floating point brojevi funkcionisu tako od kada su izmisljeni.
str-es @ 03.01.2008. 10:01
Cekaj, zasto je :

4 - 0.2 = 3.8 a ne 9.19,5T-32 ? naprimer ?????

Nesto se ne secam da sam u nekoj knjizi o Excelu mogao da procitam o floating "problemtici"
A sumnjam da na kursevima o Windows/Office u delu posvecenom excelu pomiinje negde "floating" termin
Da zamislim kolegu koji nesto racuna i pomaze koleginici i onda teatralno kaze:E nemoj to, tu ma kvaka sa "floating"
Kako vas bre ne smara da serete ovoliko?
5 godina koristim excel i prvi put cuujem za to.
Ili je Excel takodje postao aplikakcija za iskusne programere?

Citam onu temu sa unistavanjem diska od strane linuxa, i tu se smarate do bola a onda odvalite ovakvu glupost tipa:
Ma daj ne tupi, to je floating, ne znas VB, majmune jedan

Serete bre

0.2 - 0.2 = 0

Nula

N U L A

Ivan Dimkovic @ 03.01.2008. 10:07
Pa to i jeste 0 u Excelu ;-)

A sad lepo, pre nego sto krenes u optuzivanje drugih da "seru" procitaj sta pise u uputstvu za reprodukciju 'baga':

Citat:

· Copy/paste formula MANY times below it.


Dakle, ni u Excel-u se to ne vidi dok IEEE754 round-off error ne postane dovoljno bitan da utice na prikaz.

IEEE754 round-off error nije bag - to je osobina floating point brojeva. A kome to ne odgovara moze da:

1. Koristi fixed-point brojeve

ili

Citat:
degojs
U tom slučaju možeš da uključiš (isključiš) opciju "Precision as Displayed".


Dakle, sod-off, trolovi.

Citat:
mulaz
da da.. ali pricamo o excellu... ako ima u jednacini brojeve napisane na jedno mesto, reda 10^(-1), i rezultat koji ima prvih 15 mesta '0', onda bi morao da napise '0'. Ako bi ovu racunicu upotrebljavali recimo sa 'starim' dinarima, pomnozili to sa cenom recimo hleba od nekoliko stotina milijardi i jos sa nekoliko milijona ljudi, dobili bi neke stvarno cudne brojke za 'nulu'...


Excel pojma nema sta ti radis sa tim brojevima - on samo postuje IEEE standard. Postoji opcija, koju je degojs naveo, koja radi to sto zelis, ali ne moze biti "default" jer se ne zna cemu te kalkulacije sluze i da li je ta mala vrednost "round off error" ili je pak nesto sto sluzi necemu.