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: 980 | Odgovora: 21 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mulaz
/dev/home

Član broj: 47602
Poruke: 1444
89.143.132.*

Jabber: mulaz@elitesecurity.org
Sajt: localhost/~mulaz


Profil

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

Bolje ispasti glup nego iz aviona
02.01.2008. u 16:10 

degojs

Član broj: 4716
Poruke: 5050
*.dsl.bell.ca.

Sajt: www.novetehnologije.com


Profil

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



Commercial-Free !!!
02.01.2008. u 18:30 

icobh
Igor Pejašinović
PEJAŠINOVIĆ LTD.
Stara Dubrava, RS, BiH

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

Sajt: localhost


Profil

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

Ovaj post je zlata vrijedan!
02.01.2008. u 19:25 

marinowski
Igor Marinović
Palić

Član broj: 149582
Poruke: 75
79.101.178.*

Sajt: www.marinowski.com


Profil

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

mulaz
/dev/home

Član broj: 47602
Poruke: 1444
89.143.132.*

Jabber: mulaz@elitesecurity.org
Sajt: localhost/~mulaz


Profil

icon Re: Novi excel bug? 0=-3,1E-15?02.01.2008. u 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'...
Bolje ispasti glup nego iz aviona
02.01.2008. u 22:08 

degojs

Član broj: 4716
Poruke: 5050
*.dsl.bell.ca.

Sajt: www.novetehnologije.com


Profil

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

Ivan Dimkovic
Senior Product Manager - Consumer Electronics, Nero C..
EU

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

Sajt: www.linkedin.com/in/ivand..


Profil

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

03.01.2008. u 09:42 

str-es
skoro pa tamo

Član broj: 156460
213.244.208.*



Profil

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


E, vi kao da svaki dan mnozite 850 sa 77.1 pa vam to toliko smeta.
03.01.2008. u 10:01 

Ivan Dimkovic
Senior Product Manager - Consumer Electronics, Nero C..
EU

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

Sajt: www.linkedin.com/in/ivand..


Profil

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

03.01.2008. u 10:07 

Nedeljko
Nedeljko Stefanovic

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



Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 2 dana i 21h
@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]
Nedeljko Stefanovic
22.07.2008. u 16:41 

Nedeljko
Nedeljko Stefanovic

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



Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 2 dana i 21h
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.
Nedeljko Stefanovic
22.07.2008. u 16:55 

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 1944
195.222.97.*



Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 2 dana i 19h
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.
Nedeljko Stefanovic
22.07.2008. u 18:50 

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 1944
195.222.97.*



Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 2 dana i 19h
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.
Nedeljko Stefanovic
22.07.2008. u 19:26 

Kernel-1
Vojvodina

Član broj: 139340
Poruke: 797
79.101.195.*

Sajt: www.fasper.bg.ac.yu


Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 23h 51min
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)
Antec SONATA III, C2D E6850, 4 GB RAM, nvidia 8800GTX, Samsung 22" 226BW.

http://www.di.fm/mp3/goapsy.pls
24.07.2008. u 14:42 

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 1944
212.200.212.*



Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 20h 50min
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.
Nedeljko Stefanovic
24.07.2008. u 17:44 

Kernel-1
Vojvodina

Član broj: 139340
Poruke: 797
79.101.195.*

Sajt: www.fasper.bg.ac.yu


Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 19h 4min
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 :)
Antec SONATA III, C2D E6850, 4 GB RAM, nvidia 8800GTX, Samsung 22" 226BW.

http://www.di.fm/mp3/goapsy.pls
24.07.2008. u 19:29 

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 1944
212.200.212.*



Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 18h 58min
Citat:
Kernel-1: MS Excel - potencijalno unistava vas novcanik :)


Koliko i svaki drugi program te vrste.
Nedeljko Stefanovic
24.07.2008. u 19:36 

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 1944
195.222.97.*



Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 17h 28min


I šta ćemo sad?
Nedeljko Stefanovic
Prikačeni fajlovi
24.07.2008. u 21:05 

Kernel-1
Vojvodina

Član broj: 139340
Poruke: 797
79.101.195.*

Sajt: www.fasper.bg.ac.yu


Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 15h 21min
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...

Antec SONATA III, C2D E6850, 4 GB RAM, nvidia 8800GTX, Samsung 22" 226BW.

http://www.di.fm/mp3/goapsy.pls
24.07.2008. u 23:13 

Nedeljko
Nedeljko Stefanovic

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



Profil

icon Re: Novi excel bug? 0=-3,1E-15?pre 6h 15min
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 .?
Nedeljko Stefanovic
25.07.2008. u 08:19 

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

Strane: 1 2

[ Pregleda: 980 | Odgovora: 21 ]

Postavi temu Odgovori

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