Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Novi excel bug? 0=-3,1E-15?

[es] :: Advocacy :: Novi excel bug? 0=-3,1E-15?

Strane: 1 2

[ Pregleda: 10428 | Odgovora: 35 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mulaz
Ljubljana

Član broj: 47602
Poruke: 2239
89.143.132.*

Jabber: mulaz@elitesecurity.org
Sajt: www.mulaz.org


+184 Profil

icon Novi excel bug? 0=-3,1E-15?02.01.2008. u 16:10 - pre 197 meseci
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 !!

Bolje ispasti glup nego iz aviona
http://www.mulaz.org/
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Novi excel bug? 0=-3,1E-15?02.01.2008. u 18:30 - pre 197 meseci
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..



Commercial-Free !!!
 
Odgovor na temu

icobh
Igor Pejašinović
Network Admin
Navigo SC d.o.o.
Banja Luka

Član broj: 18738
Poruke: 1319
*.inecco.net.

Sajt: www.nsc.ba


+4 Profil

icon Re: Novi excel bug? 0=-3,1E-15?02.01.2008. u 19:25 - pre 197 meseci
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!
I ♥ ♀

Ovaj post je zlata vrijedan!
 
Odgovor na temu

marinowski
Igor Marinović
Palić

Član broj: 149582
Poruke: 138
79.101.178.*

Sajt: www.marinowski.com


+2 Profil

icon Re: Novi excel bug? 0=-3,1E-15?02.01.2008. u 20:37 - pre 197 meseci
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
 
Odgovor na temu

mulaz
Ljubljana

Član broj: 47602
Poruke: 2239
89.143.132.*

Jabber: mulaz@elitesecurity.org
Sajt: www.mulaz.org


+184 Profil

icon Re: Novi excel bug? 0=-3,1E-15?02.01.2008. u 22:08 - pre 197 meseci
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'...
Bolje ispasti glup nego iz aviona
http://www.mulaz.org/
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: Novi excel bug? 0=-3,1E-15?02.01.2008. u 23:22 - pre 197 meseci
U tom slučaju možeš da uključiš (isključiš) opciju "Precision as Displayed".
Commercial-Free !!!
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
193.47.77.*



+7169 Profil

icon Re: Novi excel bug? 0=-3,1E-15?03.01.2008. u 09:42 - pre 197 meseci
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.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

str-es

Član broj: 156460
213.244.208.*



Profil

icon Re: Novi excel bug? 0=-3,1E-15?03.01.2008. u 10:01 - pre 197 meseci
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

 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
193.47.77.*



+7169 Profil

icon Re: Novi excel bug? 0=-3,1E-15?03.01.2008. u 10:07 - pre 197 meseci
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.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.sbb.rs.



+2789 Profil

icon Re: Novi excel bug? 0=-3,1E-15?22.07.2008. u 16:41 - pre 190 meseci
@str-es

Brojevi u pokretnom zarezu se matematicki gledano pamte u obliku , gde je , neki ceo broj (opseg je ogranicen),a broj koji nije manji od nule, a manji je od . U principu nije manji ni od ali moze da bude ako je broj blizak nuli (preciznije, ako uzima najmanju vrednost iz dozvoljenog opsega) i tada se zove subnormalnim jer se belezi manji broj znacajnih binarnih cifara, ali se u racunu ponasa kao najobicniji realan broj. No, broj se belezi sa fisknim brojem binarnih cifara, koji zavisi od tipa podatka koji se koristi (u jezicima C/C++ float, double ili long double) i to je ono sto je ovde od esencijalne vaznosti. Dakle,

Brojevi u pokretnom zarezu se beleze sa konacnim brojem binarnih cifara.

E, sad, posto niti jedan potpun stepen broja (dakle, broj poput ) nije deljiv sa 10, u opstem slucaju konverzija iz dekadnog zapisa u binarni se ne moze obaviti tacno, vec samo priblizno. Preciznije, postoje brojevi koji u dekadnom sistemu imaju konacan zapis, a u binarnom sistemu beskonacan zapis. Takav je recimo broj 0.1 koji u dkadnom sistemu ocigledno ima konacan zapis, ali u binarnom ima beskonacan periodicni zapis koji glasi



Iz tog razloga se broj 0.1 ne moze prikazati tacno nijednim sistemom zasnovanim na zapisima konacnog broja binarnih cifara, vec samo priblizno. Kada u jeziku C++ napises nesto poput
Code:

double x = 0.1;
cout << x << endl;

promenljiva x ce dobiti vrednost koja je priblizno jednaka 0.1, ali joj nije jednaka. Medjutim, na ekranu ce biti prikazan broj 0.1 jer se ispis vrsi na svga nekoliko decimala, pa je odstupanje dovoljno malo da se prilikom konverzije u dekadni brojni sistem (u kome ce broj biti prikazan na ekranu) vrsi zaokruzivanje na 0.1.

Medjutim, broj 10 je deljiv brojem 2, pa svaki broj koji ima konacan binarni zapis ima i konacan dekadni zapis. Zaista, ako neki broj ima konacan binarni zapis, on mora biti oblika



za neki ceo broj i prirodan broj . Medjutim, tada je

,

pa svakako ima i konacan dekadni zapis. Za razliku od toga, broj se ne moze prikazati u obliku jer koliko god puta ga mnozio dvojkom, neces pokratiti onu desetku dole i dobiti ceo broj.
Stoga je obrnuta konverzija (iz binarnog sistema u dekadni) u principu moguca, pa se moze prikazati na ekranu u dekadnom sistemu sta je tacno racunar zapamtio.

Matematicki, da bi "izvukao" dekadne cifre iz broja x koji ima konacan binarni zapis, trebao bi da izvrsis sledecu proceduru
Code:

while (x>0) {
    cout << floor(x*10);
    x = 10*x - floor(10*x);
}
cout << endl;

Medjutim, ni tada neces dobiti tacan rezultat (bar ne u opstem slucaju) jer ova procedura koristi racunske operacije (kao sto je mnozenje sa 10) koje se takodje obavljaju samo priblizno u racunaru. Stoga se procedura koja ispisuje tacno u dekadnom sistemu sta je tacno zapamceno u promenljivoj tipa float, double ili long double mora pisati daleko pazljivije.

Ako te zanima sta se tacno dobija u promenljivama tih tipova kada pokusas da smestis u njih jedinicu, pa izvrsis delenje sa 10, evo, za tebe sam izracunao tacne vrednosti memorisanih brojeva:



Na kraju, zasto je 0.2-0.2=0. Pa zato sto, bez obzira sto je reprezentacija broja 0.2 u memoriji racunara samo priblizna, ona je (u istom tipu) uvek ista, pa kada istu velicinu (kakva god da je) oduzmes od iste, svakako da treba da dobijes nulu.

[Ovu poruku je menjao Nedeljko dana 23.07.2008. u 11:16 GMT+1]
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.sbb.rs.



+2789 Profil

icon Re: Novi excel bug? 0=-3,1E-15?22.07.2008. u 16:55 - pre 190 meseci
Citat:
degojs: 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..


Odluke tipa if (a<b) { ... } else { ... } mogu itekako (ponekad) da imaju smisla, ali tu treba biti vrlo oprezan. Naime, mora se biti siguran da ce u slucaju bliskih vrednosti a i b ulazenje u pogresnu granu proizvodi finalni rezultat (koji korisnika interesuje) biti priblizno tacan, a ne besmislen. Cak i if (a==0) {... } else { ... } moze imati smisla ako treba izbeci neko delenje nulom itd., mada je u tom slucaju situacija daleko slozenija (isfinite(), isnan(),...). Vazno je voditi racuna o koncepciji algoritma tako da se bude siguran da program ne bi zveknuo, zaglavio ili proizveo besmislen rezultat.

Citat:
icobh: 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...


Ovo je obicno najjednostavnije smisleno resenje ovog problema, ali ne i najbolje.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2789 Profil

icon Re: Novi excel bug? 0=-3,1E-15?22.07.2008. u 18:50 - pre 190 meseci
Ivane,

Nemoj se čuditi zašto članovi kao što je str-es ovaka reaguju kada ih provociraš. Pogledaj kakve izraze upotrebljavaš.

Citat:
Ivan Dimkovic: Mogu samo da potvrde da je cova koji je "otkrio" bag informaticki nepismen.


Ako neko nešto ne zna, a ti si stručnjak za to, onda mu lepo izađi u susret i objasni mu. Tako treba da se ponaša stručnjak, a ne da zezaš ljude zato što nešto ne znaju. I ti ponekad pišeš o stvarima koje ne znaš, pa šta.

Oni su u pravu da tako nešto ne moraju da znaju korisnici excela. No, dobro. Excel izbacuje rezultate koji su približno tačni onoliko koliko to omogućavaju IEEE754 standardi i koliko su dobro podržani. A tačno je i da u udžbenicima excel-a ne piše (mada nisam nikada čitao nijedan) ni da je SQRT(2) samo približno jednako . Treba li to da zna svaki korisnik excela? Ne mora. Postoji velika razlika između približno tačnog i besmislenog rezultata. Ako neko baš zapne sa ovakvim pitanjem, treba mu odgovoriti i to je sve.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2789 Profil

icon Re: Novi excel bug? 0=-3,1E-15?22.07.2008. u 19:26 - pre 190 meseci
Citat:
marinowski: 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

Mnogo "produktivniji" način nagomilavanja greške je računanje članova Fibonačijevog niza sa nekim početnim uslovima tipa 0.2, 0.3. Greška raste eksponencijalnom brzinom.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
79.101.195.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Novi excel bug? 0=-3,1E-15?24.07.2008. u 14:42 - pre 190 meseci
Naravno da je ovo bug. Slazem se sa str-es potpuno:)
Ne znam sta se desava kod Open-Office-ovog Calc-a, da li je ista stvar.

Ukoliko postoje problemi u radu sa float brojevima, ono sto se prikazuje korisniku
kao vrednost u nekoj celiji prosto mora biti tacno (znaci ako se videlo da se greska javlja,
treba je korigovati da se prikazuje tacan rezultat, a ne objasnjavati netacne
rezultate nacinima na koje racunar vrsi racunske operacije. To zaista korisnika ne zanima)
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.212.*



+2789 Profil

icon Re: Novi excel bug? 0=-3,1E-15?24.07.2008. u 17:44 - pre 190 meseci
Hajde leba ti, napiši mi u pozicionom dekadnom sistemu tačan rezultat delenja 1 sa 3 ili tačnu vrednost primene operacije kvadratnog korena na broj 2. Razumem ja korisnika, ali ako on očekuje nemoguće, to je njegov lični problem, a ne problem softvera.

Ako se korisniku ne sviđa što excel prikazuje netačne rezultate, slobodno može da uzme neki drugi program, koji takođe prikazuje netačne rezultate. To je pravo kupca na izbor proizvoda, koje niko ne osporava, ali to nema veze sa kvalitetom softverskog proizvoda.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
79.101.195.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Novi excel bug? 0=-3,1E-15?24.07.2008. u 19:29 - pre 190 meseci
Citat:
...ali to nema veze sa kvalitetom softverskog proizvoda.


Ali bi moglo da ima veze sa gubitkom nekog ko posluje a oslanja se na Excel
i njegove rezultate, zar ne? :)

MS Excel - potencijalno unistava vas novcanik :)
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.212.*



+2789 Profil

icon Re: Novi excel bug? 0=-3,1E-15?24.07.2008. u 19:36 - pre 190 meseci
Citat:
Kernel-1: MS Excel - potencijalno unistava vas novcanik :)


Koliko i svaki drugi program te vrste.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2789 Profil

icon Re: Novi excel bug? 0=-3,1E-15?24.07.2008. u 21:05 - pre 190 meseci


I šta ćemo sad?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Prikačeni fajlovi
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
79.101.195.*

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Novi excel bug? 0=-3,1E-15?24.07.2008. u 23:13 - pre 190 meseci
Nista, otvoriti novu temu o tome da Open-Office Calc ima isti bug ;)

Salu na stranu, jel moguce ove greske detektovati i ispraviti?
Recimo ako je jasno da ce izvestan broj odredjenih operacija sigurno
dovesti do greske - unapred predvideti i nekako ispraviti?

Jer nije mi jasno da se ne moze programski detektovati i resiti da 1,2 - 0,2 nije 0,9999999997.... nego je 1?

Pa kad krenem da oduzimam po 0.2 od 6 i u windows kalkulatoru, pa ni on ne pravi ovakve greske...

 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.sbb.rs.



+2789 Profil

icon Re: Novi excel bug? 0=-3,1E-15?25.07.2008. u 08:19 - pre 190 meseci
Citat:
Kernel-1: Salu na stranu, jel moguce ove greske detektovati i ispraviti?


Nije. O tome se i radi. Uvek ces dobijati samo priblizne rezultate.

Citat:
Kernel-1: Recimo ako je jasno da ce izvestan broj odredjenih operacija sigurno dovesti do greske - unapred predvideti i nekako ispraviti?


Lepo sam te pitao da mi napises tacan rezultat delenja 1 sa 3 ili tacan rezultat korenovanja broja 2. Kad budes malo porazmislio o tome, videces da je tacan rezultat nemoguce prikazati sta god radio.

Citat:
Kernel-1: Jer nije mi jasno da se ne moze programski detektovati i resiti da 1,2 - 0,2 nije 0,9999999997.... nego je 1?


Sve sto ti nije jasno je posledica necitanja prethodnih poruka, posebno mojih u kojima sam detaljno sve objasnio.

Citat:
Kernel-1: Pa kad krenem da oduzimam po 0.2 od 6 i u windows kalkulatoru, pa ni on ne pravi ovakve greske...


Ali pravi druge. Sta kaze, koliko je 1/3 ili .?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

[es] :: Advocacy :: Novi excel bug? 0=-3,1E-15?

Strane: 1 2

[ Pregleda: 10428 | Odgovora: 35 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.