Bagaleg reiknivilla í Microsoft Excel 2007

Hvað er 850*77,1 ? Flestir myndu halda 65535, en ekki Excel 2007, skv. honum virðast gilda önnur lögmál í Redmond, því hann segir 850*77,1 = 100000 sem er augljóslega kolvitlaust! Villan sem þarna um ræðir var fyrst tilkynnt hérna: http://groups.google.com/group/microsoft.public.excel/browse_thread/thread/2bcad1a1a4861879/2f8806d5400dfe22?hl=en#2f8806d5400dfe22

 

Þetta er vissulega frekar neyðarleg villa hjá þeim og vekur upp margar áleitnar (og lögmætar!) spurningar þar sem Excel er líklega útbreiddasti fjármálahugbúnaður hér á landi sem og víðast hvar annarsstaðar, má því til stuðnings nefna t.d. að fyrsta útgáfan af rafræna skattframtalinu var einfaldlega Excel skjal. En því miður er þetta fyrir löngu síðan orðið dæmigert fyrir nýútgefinn hugbúnað frá Microsoft. Þumalfingursreglan er að taka ekkert nýtt frá þeim í notkun fyrr en það kemur útgáfa *.1 eða Service Pack 1. A.m.k. ekki fyrir nein kerfi sem þarf að vera hægt að reiða sig á að virki almennilega, en fram að því er best að líta á hugbúnaðinn sem sýnishorn eða "demo" útgáfu.

 

Þar sem ég viðhef sjálfur áðurnefnda uppfærslureglu fyrir Microsoft hugbúnað, þá gat ég staðfest að þessi villa kemur EKKI fram í Excel 2003 og virðist því vera eingöngu bundin við Excel 2007.

Af lýsingum fólks á einkennunum að dæma, þá virðist vera um að ræða villu í því hvernig talan er sýnd á skjánum, en ekki hvernig hún er reiknuð innbyrðis í forritinu. T.d. ef við notum þessa (röngu) útkomu sem inntak í aðra formúlu, þá er notuð (rétta!) talan 65535 við þann útreikning sem gefur rétta heildarútkomu, þó svo að útreikningurinn 850*77,1 sýni niðurstöðuna 100000 sem er augljóslega röng.

Dæmi: Sella A1 inniheldur formúluna: "=850*77,1" sem birtist sem "100000" (rangt), sella B1 inniheldur formúluna "=A1*2" en þar birtist "131070" sem er RÉTT þrátt fyrir fyrri villuna, þ.e.a.s. á algebruformi: 131070 = A1*2 = 65535*2 ( != 100000*2 )

 

P.S. Takið eftir að ég geri greinarmun á því hvaða tala er "notuð" og hvaða tala er "sýnd", í hugbúnaðargerð er þetta tvennt ólíkt t.d. vegna þess að tölur eru ekki skrifaðar eins allstaðar. Sem dæmi þá eru þúsund krónur skrifaðar kr. 1.000,- en tíu dollarar eru skrifaðir sem 1,000.00 $, þó svo að báðar stærðirnar hafi sama tölugildi. Ef allt fólk væri jafn duglegt að samræma sína staðla og tölvunarfræðingar eru, þá væri þetta ekki vandamál!


« Síðasta færsla | Næsta færsla »

Athugasemdir

1 identicon

Merkilegt að svarið við 850*77,1 sé 2 í 16 veldi mínus 1.

Þekkt tala hjá okkur tölvunarfræðingum.

Hvernig fórstu síðan aftur að því um árið að krassa word? 

Viðar Þorgeirson (IP-tala skráð) 25.9.2007 kl. 23:43

2 Smámynd: Guðmundur Ásgeirsson

Hárrétt Viðar, heill og sæll. Að sjálfsögðu er þetta augljóslega "overflow" villa sem á sér líklega stað þegar 2-bæta (16-bita) minnishólf "fyllist". Og miðað við einkennin á hún sér stað í viðmótslagi hugbúnaðarins en ekki í "business"-laginu þar sem útreikningurinn er framkvæmdur. Fólkið sem var fyrst til að skrifa um þetta á Google spjallþræðinum gaf greinargóða lýsingu á þessari hegðun, sem ætti að hjálpa þeim í Redmond að negla niður villuna og gefa út fix.

Varðandi Word 2003 þá er rétt að ég "rakst" eitt sinn á aðferð til að krassa því illilega sem virkaði í hvert einasta skipti þrátt fyrir eðlilega notkun (en sérstaklega  þó þegar verið var að sníða til skýrslur á skilakvöldi heimaverkefna ;). Ég held að þetta hafi verið lagað í einhverjum Service pakka, því þetta hefur ekki gerst hjá mér í langan tíma og ég var satt að segja búinn að gleyma þessu.

Guðmundur Ásgeirsson, 28.9.2007 kl. 00:29

Bæta við athugasemd

Ekki er lengur hægt að skrifa athugasemdir við færsluna, þar sem tímamörk á athugasemdir eru liðin.

Innskráning

Ath. Vinsamlegast kveikið á Javascript til að hefja innskráningu.

Hafðu samband