» »

Zanimiv hrošč v Excelu

Zanimiv hrošč v Excelu

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.

105 komentarjev

«
1
2 3

snow ::

Ma sramota, da jih jebejo neke 16 bitne omejitve, ko pa mamo že 64 bitne sisteme.

Office 2007 = upgraded crap.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

poweroff ::

Koliko časa bomo čakali na popravek?

Predvsem pa - kako lahko tak crappy software sploh prodajajo???
sudo poweroff

poweroff ::



WTF je tukaj problem?

OK, imam idejo za reklamno kampanjo.

Na levi slika od MS Offica, na desni od OOo Calca, spodaj pa napis:

"Pri odločitvi za OpenOffice.org se ne morete ušteti".

Kul, to bom pa res naredil :P
sudo poweroff

Zgodovina sprememb…

  • zavarovalo slike: poweroff ()

WhiteAngel ::

Matthai: lol

linuxdady ::

Matthai, oprosti pisavi, ampak en drek zastopiš.

MS Office je bistveno naprednejši in ti da za skoraj
40% boljši rezultat.

DJ MartiNi ::

MS Office je price:performance eno navadno sranje. 8-)

Boljši rezultat? Tukaj je en primer, ko je napačen. :D
1:Phenom II X3 720BE/ASRock 970M Pro3/2x8GB G.Skill Aegis/Radeon HD2600XT
2:Athlon X2 BE-2300/Foxconn A7DA-S/2x2GB A-Data PC2-6400/Radeon HD3300

Backup22 ::

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...
//

zaj_tam ::

Na tisto aplikacijo za izdelavo grafov v OO npr. se lahko samo pes poščije no ...

T-h-o-r ::

ja, pri open office pač rečeš ja sej se zgodi zato, ker ne rabiš 100eurov dat zanje
Why have a civilization anymore
if we no longer are interested in being civilized?

DJ MartiNi ::

T-h-o-r je dejansko zelo dobro napisal. Za OO ti pač denarja ni treba dat.
1:Phenom II X3 720BE/ASRock 970M Pro3/2x8GB G.Skill Aegis/Radeon HD2600XT
2:Athlon X2 BE-2300/Foxconn A7DA-S/2x2GB A-Data PC2-6400/Radeon HD3300

Backup22 ::

Ja, 100€ je pa tako ogromno (2 novejši igrici)...
//

BluPhenix ::

Ali pa kosilo za en mesec ...

Zanimiv bug.
Podpisa ni več, ker so me poskušali asimilirati.

jimmi ::

Tole sploh ni zabavno. Kako se jim lahko zgodi tak debilizem?

@zaj_tam
Kaj ti pomaga lep vmesnik za izdelavo grafov, če imaš potem točke 40% višje postavljene.

Matevžk ::

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.
lp, Matevžk

zaj_tam ::

@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.

Zgodovina sprememb…

  • spremenil: zaj_tam ()

Backup22 ::

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)...
//

poweroff ::

Evo, reklama.

A lahko prosim en designer zadevo malce lepše oblikuje? :D
sudo poweroff

Zgodovina sprememb…

  • spremenilo: poweroff ()

darkolord ::

A zdej bomo začeli še z reklamami smetit?

Backup22 ::

darkolord - malo humorja ne škodi ;)

Sej lahko nardimo podobno za grafiko in linux...
//

mspiller ::

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.

djurodrljaca ::

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; ) >:D

jype ::

Mene tudi blazno zanima ozadje - a lahko kdo, ki ima office 2007 in kakšen debugger za windows prilepi sem disassembly izračuna?

neoto ::

Zanimivo... (iz linka na google groups)

There appears to be more of them. For example:

=5.1*12850
=10.2*6425
=20.4*3212.5
=40.8*1606.25
=77.1*850
=154.2*425
=212.5*308.4
=308.4*212.5
=425*154.2
..etc

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)

=A1*1
Keeps it at 100000.

=A1-1 returns 65534

=A1/1 is still 100000
=A1/2 retuns 32767.5

Using MAX() on a range appears not to see 100000.

Very Serious!
--
Dana DeLouis

jype ::

Noro. Surrealistično.

Škoda, da izvorne kode za Excel ni mogoče pogledati - prav presneto me firbec matra, kako tako obnašanje sploh dosežeš.

StajercSSS ::

Offtopic: Ko že o linuxu in win..

Če hočeš met linux na rač,moraš vse obvladat (terminal itd.),morš bit že napiflan računalničar..
Windows pa lahk klika vsak butl..

Zato bo linux uporabnikov zmeraj ostal 1%.. (Vsaj po mojem)

Jaz mam oba gor na disku,sam uporabljam windows,ker še zmeraj nisem ugotovil,kako net naštimat v terminalu.. :D
Voziš se v formuli, pred tabo je podmornica, za tabo pa vesoljska ladja.
Kako se rešiš iz te situacije?
Rečeš ciganu naj ustavi vrtiljak.

jimmi ::

Za OOo ne rabiš Linuxa.

StajercSSS ::

Zato pa je napisan offtopic.. Nima nič veze z exelom,pa oo..
Voziš se v formuli, pred tabo je podmornica, za tabo pa vesoljska ladja.
Kako se rešiš iz te situacije?
Rečeš ciganu naj ustavi vrtiljak.

STASI ::

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"

abcčdefghijklmnoprsštuvzž

jimmi ::

Še en opensource program za statistiko: http://www.r-project.org/

Loki ::

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.
--------------------------------------------------------------------
I left my wallet in El Segundo

Zgodovina sprememb…

  • spremenil: Loki ()

Matevžk ::

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. :)
lp, Matevžk

McHusch ::

Matthai, vsaj vejice in pike v svoji reklami popravi. ;)

Pa OO je na spletu, ne v spletu.

Zgodovina sprememb…

  • spremenil: McHusch ()

fiction ::

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.

mare_ ::

Ko dejansko nekaj racuna vzame pravilno vrednost (65535) in jo uporabi.
=A1+1 tudi vrne 100001 in ne 65536.

snow ::

Hudo je lahko tole če imaš kje formulo in je tale bug le delni rezultat!
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

linuxdady ::

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.

fiction ::

> =A1+1 tudi vrne 100001 in ne 65536.

Uhm ja, my bad. Sem spregledal tale primer.
Vse skupaj unici logiko. Recimo da je A1+1 napaka v meritvi pa je. :)

Kaj pa racun z dvema realnima steviloma, ki bi moral vrniti 65536 ali pa 65534?

BigWhale ::

> Škoda, da izvorne kode za Excel ni mogoče pogledati - prav presneto me
> firbec matra, kako tako obnašanje sploh dosežeš.

To ni tako tezko.

Ocitno za prikazovanje vecine rezultatov v celicah uporabljajo 16 bitna stevila. 65535 je zadnje 16 bitno stevilo.

Nekje je namesto if (x >= y) uporabljeno if (x > y)

Pa je problem tukaj. Tistih 100.000 pa potem exception handler 'zrihta'.

;)

BigWhale ::

PS: Je kdo preizkusil kaj se dogaja z rezultati okrog 256? Isti problem? :)

balocom ::

Kaj hudiča jih je pičlo do so šli 16bit števila uporabljat:\ ?? Ne verjamem da je poraba RAM-a tuklkrat višja zrd tega, da se to nebi splačalo...
V svetu brez googla bi bil najbolj uporabljen ukaz v bash-u ukaz man

'FireSTORM' ::

Ohjoj linuxašem se že rit smeji

Od kdaj pa moraš biti linuxaš da lahko uporabljaš OOo? Nazadnje ko sem prečekiral njihovo stran je za polkna tudi OOo.
Those penguins.... They sure aint normal....

BigWhale ::

balocom:

> Ne verjamem da je poraba RAM-a tuklkrat višja zrd tega, da se to nebi
> splačalo...

Ja, pri 32 bitnih stevilih je poraba rama se enkrat vecja, tko od oka... ;>

darkolord ::

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

balocom ::

@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

snow ::

Skor ziher sem da gre poraba RAMa z vsakim officom gor... ne glede na to kolk maš ti notri v tabeli.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

linuxdady ::

Tudi IBM symphony izračuna pravilno:
Spreadsheet

Zgodovina sprememb…

'FireSTORM' ::

Pa OO je na spletu, ne v spletu.

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)
Those penguins.... They sure aint normal....

Quikee ::

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š:
<c r="B5">
  <f>850*77.1</f>
  <v>65534.999999999993</v>
</c>

Backup22 ::

No, glavno da izračuna pravilno in prikaže narobe => bug le ni tako nevaren, če ga sam ne opaziš in ti nič ni jasno :D
//
«
1
2 3


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Intel Skulltrail tudi uradno

Oddelek: Novice / Matične plošče
115090 (3545) OChack
»

Zanimiv hrošč v Excelu (strani: 1 2 3 )

Oddelek: Novice / --Nerazporejeno--
10514384 (9180) Matheeew
»

ms excell 2007 bug mnozenje ... popolnoma napacen rezultat

Oddelek: Programska oprema
162303 (1907) Loki
»

FBI ponovno uporabil spyware za izsleditev osumljenca preko interneta

Oddelek: Novice / Zasebnost
204343 (3584) poweroff

Več podobnih tem