Excel skal gå folkeskolens matematikundervisning om – igen
Microsoft har lanceret deres nye Office 2007 pakke. En af de store nyheder er et gevaldigt grafisk løft, som skulle gøre det nemmere og mere intuitivt at arbejde med sine dokumenter, regneark og så videre. Man fristes dog til at tro, at det er det eneste der er sket, og at der rent faktisk blot er tale om old-gammel kode der har fået en grafisk overhaling.
Det viser sig nemlig, at en 12 år gammel fejl er genintroduceret i Excel 2007, en fejl som også er fundet, rettet og lukket i den tidligere Excel 2003. Første observation af fejlen fandt sted i Excel 95.
(Tryk på “Fortsæt med at læse” for at læse resten af denne artikel)
Prøv at indtaste følgende i Excel 2007:
Celle A1: 850
Celle B1: 77,1
Celle C1: =B1*A1
Spøjst – det giver jo 100000. Det skulle man ellers ikke tro.
Hvad er 100000 divideret med 2 så? For at blive kloge på dette skal du indtaste:
Celle D1: =C1/2

Det var Sørens!
På lommeregneren giver 850 * 77,1 tallet 65535, og det er naturligvis det korrekte. Og halvdelen heraf giver som forventet 32767,5.
65535 er et tal vi programmører kender særdeles godt, da det er et grænsetilfælde i det binæretalsystem, et såkaldt Mersenne nummer, i dette tilfælde 216-1. Indenfor programmeringsverdenen er det helt specifikt grænsen for en usigneret 16 bits heltalsværdi. Vælger man en forkert lagerstørrelse til sine data sker der et såkaldt aritmetisk overløb. Man kan f.eks. ikke gemme værdien 65536 i en usigneret heltals variabel, der vil ske et overløb. Og, alt peger på at Excel 2007 bakser rundt med et problem i dette grænsetilfælde, igen.
David Gainer, en Manager fra Microsoft erkender selv fejlen, men nedtoner den fra at være alvorlig, “da der kun er tale om visning af et forkert tal, det ligger skam korrekt i computerens hukommelse” (løst citeret af undertegnede).
En stor Amerikansk bank har præsenteret et regnskab med et forkert fremvist overskud på over en halv milliard. Men det gør ikke noget jo – for alle der får regnskabet, kan naturligvis selv inspicere computerens hukommelse for at se de rigtige tal. Om det er sammenhængende eller ej, virker denne artikel dog interessant hvoraf det fremgår at Bank of America desværre ser sig nødsaget til at fyre 2.500 medarbejdere.
Stående bifald herfra!
Michael Schøler
Jacob Andresen
Microsoft får kun hovedrysten herfra;)
Måske skulle vi invitere os selv forbi Redmond og holde et oplæg omkring bug tracking systemer?