mboost-dp1

Microsoft

Fejl i Excel 2007 er kun overfladisk

- Via CNET News - , redigeret af Net_Srak

I går kunne vi berette, at der var dukket en 12 år gammel fejl op i Microsofts Excel-program, en del af Office 2007-pakken, som ved en given beregning returnerede et forkert resultat.

David Gainer fra Microsoft har nu kommenteret fejlen og påpeger, at der “kun” er tale om en forkert visning af resultatet, internt regner Excel korrekt. Dividerer man f.eks. cellen med det “forkerte” resultat med 10, får man det korrekte tal 6553,5, og ikke 10.000.

Gainer kunne ligeledes informere om, at Microsoft er i gang med at lave en hotfix, der vil udbedre fejlen.





Gå til bund
Gravatar #1 - NeoNmaN
27. sep. 2007 09:59
Hvis ikke et regnark kan regne korrekt hvordan vil man så være sikker på at folk regner rigtig i skolen? :o)
Gravatar #2 - Hornbech
27. sep. 2007 10:01
Ganske sjovt at buggen også opstår i calc, i hvertfald på min Vista Business

Den gode Joel Spolsky giver også sin besyv på Excel buggen:

Link til Joel's blog
Gravatar #3 - Staeren
27. sep. 2007 10:01
#0 Hvis man læser i bloggen fra nyheden i går, vil man dog finde us af at alle operationer som gør tallet mindre, så som at dividere eller at trække fra, så gives det kortekte resultat.

Gøres det "overfladiske" resultat derimod større, dvs. f.eks. gange eller bare lægge til, så bruger Excel det forkerte resultat i operationen.

Så denne nyhed er faktisk en løgn, og burde egentlig blive fjernet...
Gravatar #4 - lost-viking
27. sep. 2007 10:01
#1 den regner jo rigtig den viser bare det forkerte svar.. hvilket jeg godt kan se kan forvirre lidt.. :D

Syntes nu stadig det er lidt en grum fejl.. måske sku de tjække hele programmet igennem.. så der ikke er flere af den slags fejl.. 2+2 sku jo nødig give 10000 :P
Gravatar #5 - tgr
27. sep. 2007 10:08
Fejl i overskriften er kun overfladisk.
Gravatar #6 - helsinghof
27. sep. 2007 10:08
Hvordan staver man til Excel(l)?

Det er da godt at man kan rette i nyhederne :P
Gravatar #7 - revald
27. sep. 2007 10:10
Kan godt lide hans bemærkning:
"And let's face it -- do you really want the bright sparks who work there now, and manage to break lots of perfectly good working code -- rewriting the core calculating engine in Excel? Better keep them busy adding and removing dancing paper clips all day long."
Gravatar #8 - Hornbech
27. sep. 2007 10:19
#7
Hehe ja

Joel er god til at skrive, og har nogle fornuftige synspunkter. Jeg kan anbefale at læse hans bøger, selvom den ene er baseret en del på hans blog...
Gravatar #9 - Ziftex
27. sep. 2007 10:26
David Gainer fra Microsoft udtaler "Its not a bug - Its a feature!!"
Gravatar #10 - bobslaede
27. sep. 2007 10:29
850*77,1 giver 65535

Excel:
850*77,1 giver 100000
Divider det med 10 (stadig i excel) giver det 6553,5

Det er jo ikke helt det samme...
Gravatar #11 - bobslaede
27. sep. 2007 10:30
Aha, læste lige lidt forkert :p
Gravatar #12 - fidomuh
27. sep. 2007 10:34
TSk tsk, man skal bare kunne "teh excel lingo".

Eksempel:
850*77,1 = 100.000.
850*77,1+2-2 = 65535.

Saa du skal bare saette +2-2, ind i alle dine udregninger :)
Gravatar #13 - The_Real
27. sep. 2007 10:55
#3
Det er kun en visuel bug. Værdien "nedenunder" er korrekt.
Ja det er korrekt at visse udregninger ser ud til at benytte det viste tal, men det er kun visuelt.

Fx:
A1: =850*77,1 viser: 100000
A2: =A1+0,1 viser: 65535,1
A3: =A2+0,9 viser 100001
A4: =A3+0,1 viser 65536,1
A5: =A4+0,9 viser 65537
Gravatar #14 - Staeren
27. sep. 2007 11:07
#13

Fra en MSDN blog


Dette svar var postet:
A1 =850*77.1 --> 100000
B1 =A1+1 --> 100001 (really a display bug???)
C1 =A1-1 --> 65534
D1 =B1-C1 --> 2

Altså i eksemplet B1vises det, at det umiddelbart må være mere end en display-fejl, eftersom det burde have givet resultatet 65536.

Alligevel giver B1 - C1 et korrekt resultat, hvilket bare er endnu mere mystisk.
Gravatar #15 - The_Real
27. sep. 2007 11:11
#14
Det er en display bug,
Personen du quoter antager at det kun er 65535 => 100000 der er en display bug ved, selvom hans eksempel tydeligt viser at der også kan opstå en display bug ved 65536 => 100001 .
Gravatar #16 - walling
27. sep. 2007 11:41
Nu har jeg ikke testet følgende da jeg bruger OpenOffice, men fra hvad jeg har læst et sted på nettet, så er det ikke kun en display-bug. Det er en bug i ROUND-funktionen (og MOD-funktionen også), som altid kaldes før tallet vises. Tag dette eksempel:
=ROUND(850*77.1)*2 giver 200000

Kan nogle bekræfte dette?

Så hvis du laver et finansregneark med styr på decimalerne (f.eks. afrundet til øre-beløb), så du bruger ROUND en masse steder, så kan det blive farligt. :-)
Gravatar #17 - pote
27. sep. 2007 12:10
#14
Må jeg foreslå at du læser den artikel som #2 linker til, den forklarer det rigtig godt.
Joel Spolsky har af og til nogle gode artikler for lidt af hvert.
Gravatar #18 - tazly
27. sep. 2007 12:15
I modsætning til hvad nyhedsteksten, Microsoft og #15 påstår, så er det ikke kun en overfladisk fejl.

MOD- og ROUND-funktionerne er grundlæggende syge i Excel 2007. De to funktioner er udbredt brugt til afrunding i såvel regneark som internt i Excel. Internt i Excel bruges funktionerne til afrunding af tal, der præsenteres på skærmen, til gemning til kommasepererede filer mv.

Men afrundingsfunktionen bruges også mange steder indtastet i regneark, og alle de steder kan der ske udregnings-fejl, hvis man bruger Microsoft Excel 2007.
Gravatar #19 - Dreadnought
27. sep. 2007 12:26
#16
I Office2007:
=ROUND(850*77,1;0)*2 giver 200000
Gravatar #20 - Xill
27. sep. 2007 13:10
ja ... det ser da ud til at det er lidt mere end end bare en display bug

=AFRUND(D24;0)*2+10 giver 200010

så hvis du benytter AFRUND eller ROUND kan du altså få den til også at smadre det interne binære tal
Gravatar #21 - atke
27. sep. 2007 20:18
Det ligner vel egentlig noget bøvl men 16 bit variabler, da 2^16 netop er 65536. Der må køre noget skummelt gammelt kode i maven på Excel. Spørgsmålet er vel om det er et påskeæg eller en code-bomb fra en utilfreds medarbejder. Eller om der er en teknisk årsag til at max-værdien af en unsigned 16 bit integer ved afrunding ender i det magiske tal 100.000
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login