Slashdot - Na Slashdotu poročajo o zanimivem hrošču v Excelu 2007, ki so ga odkrili na Googlovih skupinah. Težav tokrat ne povzroča neka obskurna operacija, temveč množenje.
Opaziti je, da operacija 850 * 77.1 vrne rezultat 100.000 namesto pravilnega 65.535 (0xFFFF v šestnajstiškem sestavu). To pravzaprav ni osamljen primer, saj so našteli cel kup primerov, ki bi morali dati enak rezultat, a namesto tega vrnejo enako napako. Hrošč se v prejšnjih verzijah ne pojavlja. Dodatek: Microsoft je hrošča uradno priznal in pokomentiral.
Ohjoj linuxašem se že rit smeji, a da pa bi to bilo pri OO, pa bi blo že vse v stilu ja sej se zgodi... Hrošč je pa res zanimiv in čuden.. No, ga bodo že pokrpali...
Matthai , linuxdady LMAO :D Daj nardita to reklamo, pa spodaj še v sakrastičnem slogu pripišia do 40% voljši rezultati :D Sicer je pa 3/4 ljudi še na Office 2003, vsaj tistih, ki jih jaz poznam in veliko delajo z Excelom, Wordom...
Ko že flejmamo, bom nadaljeval: OOo se mi kdaj grdo sesuje. Tako sesuje, da izgubim kakšno minuto ali dve dela (brez vklopljenega recoveryja bi bila izguba seveda večja). Ampak tak (na zunaj viden grd) hrošč ni NIČ v primerjavi s tem, kar je tu naredil MS. Hrošča v izračunih sploh ne opaziš, dokler ne greš ročno računat. Kar pa ne greš - saj zato pa imaš softver za preglednice, mar ne? Torej, kakšen grd na zunaj viden hrošč, ki ga opensourcarji pogosto kakšno leto ne odpravijo, ni nič v primerjavi s tem.
@jimmi: če si kdaj poskušal uporabljat app iz OO za izdelavo grafov boš vedel, da ima le najosnovnejše funkcije. Zame je bil praktično neuporaben in sem zato pač zdeletiral OO. Ne gre se za vmesnik ampak za to kaj je sposoben. Officeov je precej več namreč ... Sicer pa ok, če rabiš napredno nastavljene grafe pač uporabiš namenski program, ker tudi v office kaka stvar manjka.
jimmi ne pretiravat no, 99% vrednosti zračuna pravilno... In je precej majhna verjetnost, da trofiš ravno tole, je pa res, da je hrošč čuden in nevaren..
Matevžk vsak software in celo harware ima buge in očitno tega pač niso opazili (jih ne zagovarjam, ampak verjamem, da ga očitno ni bilo tako lahko opaziti)...
Evo v tejle moji temi od zjutraj sem dodal se dva primera napak, pri drugih prodkutih. Prvi je napacen izracun n nad k pri Google Spreadsheet in Octave, ter Googlovo pretvarjanje enot.
Opaziti je, da operacija 850 * 77.1 vrne rezultat 100.000 namesto pravilnega 65.535 (0xFFFF v šestnajstiškem sestavu).
Kako so sploh lahko prišli do tega problema? Eden od členov ni celo število, a ne bi bilo pametneje, če bi ga zato prikazal kot "float"? Poleg tega pa mi ni jasno kako lahko dobiš rezultat 100.000, saj bi kaj takega lahko naredil v principu samo s kakšnim if stavkom ( if(cell==0xFFFF) cell=100000; )
What's even stranger is this: Suppose the formula is in A1. =A1+1 returns 100001, which appears to show the formula is in fact 100000 and a very Serious problem. And if you multiply be say, 2 you get something else:
=A1*2 returns 131070, as if A1 had 65535. (which it should have been)
Zanimivo kako ste precej primerjali z OOo. Glede na to da je Excel komercialna stvar, bi ga jaz osebno primerjal s Minitabom ali pa Statistico. Oba sta dosti boljša od Excela res pa da sta prvenstveno namenjena za statistiko. Je pa drugače res žalostno za tako napako s strani MS-a in napaki pri osnovni operaciji. Zelo drago te pride tole napačno množenje.
"WAR IS PEACE, FREEDOM IS SLAVERY, IGNORANCE IS STRENGTH"
sicer pa pise tudi, kako jim je to ratalo, excel ima se en preprocessor, preden poda vrednosti fpu. the openoffice bullshit stops below this line. --------------------------------------------------------------------
Matevžk vsak software in celo harware ima buge in očitno tega pač niso opazili (jih ne zagovarjam, ampak verjamem, da ga očitno ni bilo tako lahko opaziti)...
Jasno jih ima. In dokaj očitno je, da je ta bug praktično nemogoče opaziti. Zelo presenetljivo je, da ga je kdo opazil. Ampak da se ti v numeričnem interpreterju matematičnih funkcij, pisanim v višjem programskem jeziku, pojavi takole grda in subtilna napaka, pa skoraj kaže na neko resno težavo v razvojnem procesu ...
No, od takele napake se jasno pričakuje, da bo odpravljena. Vseeno pa sem nekje slišal zanimivo anekdoto s področja razvoja vojaške programske opreme. Menda so enkrat 'pozabili' specificirati, katera vrednost naj se prikaže, če tako glavni kot rezervni višinomer javljata napako. Implementator je začasno, da je lahko nadaljeval, vrnil vrednost 3000. Stvar pa se je potem pozabila in se prikradla v končno verzijo. Ko so jo po nekaj letih v podjetju, kjer so softver razvijali, želeli popraviti, jim vojska tega ni pustila. V vsa interna navodila in treninge so namreč vključili ta podatek. Vsi piloti so bili natrenirani, da višina '3000' po vsej verjetnosti ne pomeni res te višine, ampak napako na višinomerih. Tako je bilo napako bolj logično (in varno!) pustiti kot pa popraviti.
Vse skupaj je zelo problematicno. Ce bi se program na vsake toliko casa sesul, to ne bi bilo tako kriticno kot pa to, da program na katerega se ljudje zanasajo vedno vraca napacne rezultate.
=A1*1 Keeps it at 100000. =A1/1 is still 100000
Te primeri nakazujejo na to, da takrat Excel pac samo nic ne naredi (in pusti tisto napacno 100000 notri). Ko dejansko nekaj racuna vzame pravilno vrednost (65535) in jo uporabi. Ocitno je torej v A1 vrednost 65535, samo prikazana je pa kot 100000.
Nimam pojma zakaj do tega pride, ampak najbrz ne gre za nek if (mogoce misli da je floating-point stevilka je pa integer ali kaj takega). Ce bi vsaj bilo 10000 (0xffff + 0x1 = 0x10000), ampak 100000 khm. Me prav zanima kaksna bo razlaga od Microsofta.
StajercSSS: Offtopic odgovor na offtopic trditev: Distribucije Linuxa so zelo različne. Nekatere imajo zelo enostavna nadzorna središča, kjer se vse nastavlja izključno s klikanjem (PCLinuxOS, Mandriva, SuSE..........) Druge pa spet zahtevajo nekaj predznanja, nekatere pa tudi ekspertno znanje. Če si izbral distribucijo, v kateri se ne znajdeš, poskusi kaj drugega. Je vse za isto ceno.
Napaka je sicer, kot izgleda, samo pri prikazu vsebine dotične celice. Dejanska vsebina (ki se uporabi pri nadaljnih opreacijah ali ko do nje dostopaš z makrom) je pravilna
@BW ja, tko od oka mi je to jasno.... ...ampak, sej RAM itk plača uporabnik.... ..kaj mamo raje, kup stvari izračunanih narobe ali v vsakem compu 1GiB RAM-a za zihr (če ne, pa vsaj 512MiB pa zatu da vse skup glih še dela).
V svetu brez googla bi bil najbolj uporabljen ukaz v bash-u ukaz man
Odvisno kako gledaš na splet. Če gledaš na splet kot n-strano telo kjer je na vsaki strani nekaj potem je na, če pa ga pogledaš kot prostor je pa v spletu, kar bi bilo bolj logično(Cyber/Web Space, Space - prostor)
Napaka je sicer, kot izgleda, samo pri prikazu vsebine dotične celice. Dejanska vsebina (ki se uporabi pri nadaljnih opreacijah ali ko do nje dostopaš z makrom) je pravilna
Res je - če preglednico shraniš in datoteko analiziraš vidiš: