
Hrubá chyba při počítání v Excelu 2007
V Excelu 2007 byla objevena významná chyba výpočtů. Nejde o žádné chybné zaokrouhlování v desetinných místech, snadno dostanete Excel do úzkých, kdy se sekne o desítky tisíc. Zkuste si to sami. Zdá se, že má Excel velké problémy s čísly, které se velmi blíží číslu 65 535.http://www.zive.cz/Bleskovky/Hruba-chyba-pri-pocita ni-v-Excelu-2007/sr-1-sc-4-a-138300/default.aspx
Hmmm. Kde je Vladimir?
Sedí v koutku se staženýma ušima a přemýšlí, jak obhájit M$...
(sorry Vláďo)
Ať už Vladimir vymyslí cokoliv, tohle je ostuda jako prase. Program s takovou chybou, bych se styděl odevzdat, třeba jako domácí úkol na střední škole, a né ho prodávat za X tisíc korun.
Kam ten svět spěje...
Aj toto prehrmi a Excel bude pouzivat dalej tak isto vela pouzivatelov Windowsov, ako doteraz. Darmo sa tu pride hockto vzrusovat, ci sa mylim?
Kazdy mame navic moznost volby - kdo kvuli teto chybe nemuze usnout a chce navic usetrit, muze prejit...
Excel je tabulkový procesor, ne domácí úkol.
Mě osobně tyto jevy neudivují.
A co jako? Tenhle arugment mi nedává smysl. To, že v M$ neumí naprogramovat dobře ani násobení, které navíc v dřívějších verzích Excelu fungovalo dobře, je na pováženou...
Třeba se na to jednou budeš dívat jinak.
Kdosi tady měl v podpisu heslo, které znělo nějak takhle:
Poslední chyba v programu je ve skutečnosti předposlední.
A podobné...
V aplikaci, která má desetitisíce programových řádků se přehlídneš velice snadno.
Právěže takováto chyba se hledá velice blbě.
Program si lze vlastně představit jako deterministický systém do kterého ti leze určitý počet (v tomto případě) dynamických vstupů:
Počet těchto vstupů je prakticky neomezený. A oni si to při vývoji vyzkoušejí třeba na
náhodném vzorku 10 000 vstupů a ty zrovna sedí (jsou OK).
Proto se taková chyba odhaluje extrémně špatně.
Průser to je bezpochyby, ale je tu zásadní rozdíl:
Excel je tabulkový procesor, ne domácí úkol.
Doufám, že to takhle nezačnou testovat třeba výrobci letadel... To raději bubu chodit pěsky.
Hmmm. Jenomže problém je v tom, že počítač dělá pouze to co mu řekneš.
.
Počítač neví jestli to co dělá je správné nebo špatné.
A když máš (prakticky) nekonečný počet hodnot na zpracování tak tady není nekonečno lidí a nebo člověk s nekonečným časem
Kromě toho je tady milión dalších věcí. Například nestačí totálně doprasit nějaký prográmek tak, aby fungoval.
Je potřeba také algoritmy optimalizovat, aby zabíraly pokud možno co nejmenší čas.
Aby tam nebyly tzv. memory-leaky (úniky paměti)...
Když tohle všechno a další věci doděláš přehlídneš chybu velice snadno.
Tohle myslíš vážně? Tady nemůže jít o nějakou fuzzy logiku, kdy si vyzkouším, že "zhruba to funguje", nebo "tento vzorek dat dává správný výstupy". Tady jde přece o výpočet (s jistou mírou přesnosti, danou reprezentací čísel ve dvojkové soustavě). Pokud chybu neudělá procesor, pak je to evidentně podivná/záhadná chyba programátora(ů), kterej provádí s výpočtem cosi nestandardního. Normální kalkulačka ti takovou chybu neudělá, tahle verze Excelu jo. Sám si to nedokážu vysvětlit, na podtečení/přetečení to nevypadá...
Pavel
Přesně.
Jak Squad_leader sám dvakrát zopakoval, Excel je především tabulkový kalkulátor (procesor), a tak by měl umět správně počítat. Tady žádná obhajoba M$ ani nemůže existovat...
Klidně si pokusím zaspekulovat. Problém se údajně týká hodnot, které se pohybují okolo čísla 65 535.
Když se podíváme tak přesně této hodnotě odpovidá typ unsigned short int.
Například je možné, že program si interně přetypovává hodnoty tak, aby přesnost a zabraná paměť byla optimální.
(Excel je navržen pro velké datové bloky). A právě při daném přetypovávání na této mezní hodnotě se provede
chybná volba.
Sám používám (z donucení) Excel 2003 takže nevím, protože mě to funguje správně.
//Edit
Neobhajuji nikoho a M$ už teprve ne.
No raději tady ten odkaz ještě dám:
http://en.wikipedia.org/wiki/Floating_point#Range_o f_floating_point_numbers
Jsem tady
Já bych se program jako Excel, i s takovou chybou v žádném případě nestyděl odevzdat, protože bych v životě něco tak složitého nevytvořil.
OK tak čekaná apologetika: MS Excel i s tou chybou běží a počítá rychleji než Open Office... ok bad joke.
To bys ani nemohl, protože takhle složitý prohram snad ani nemůže vyvinout jeden člověk sám. Narážka na OO je opravdu bad joke, protože k čemu mi je rychlost, když program místo výsledků jednoduchého násobení vyhazuje hausnumera...
Fakt je nejlepší auto, které jede nejrychleji, ale občas jede jinam, než potřebuji?
Pokud se chybová hláška objevuje, je to předpokládaný stav.
Horší ovšem je pokud se neobjevuje vůbec.
Tady:
http://groups.google.com/group/microsoft.public.exc el/browse_thread/thread/4e6aff0d1290f21c?hl=en
se řeší všechny další, s tímto svázané, chyby.
)
(Safra, kde já jen nechal to kalkulačku z Asie, ta umí alespoň počítat
Pravděpodobnost nalezení chyby v Oo je menší tolikrát, kolikrát méně uživatelů jej používá. Pro Oo ale mluví otevřený zdroják, ve zdrojáku se totiž chyba hledá lépe, než pouhým testingem (u takle složitýho softwaru). Nicméně bych netvrdil, že je Oo bez chyby a MS Office jich tam má hodně.
Průser je jiná věc - tohle se ani nemělo dostat ven z MS, natož aby to prošlo rukama solidních betatesterů. Jenže ono to vyšlo najevo víc jak rok od veřejné Bety. Za tohle by někdo letěl, ať už je to problém plovoucí čárky, dvojkové soustavy, šulení s pamětí, zaokrouhlování nebo bůhvíčeho ještě. A neodskákal by si to programátor, který je na konci řetězce, ale ti blbečci z managementu a marketingu, kteří tlačí na to, aby to bylo rychle. Tady je evidentní, jak se přeskakují vývojová stadia softwaru. Podle mě je to typická ukázka toho, jak se nedělají testy na okrajové podmínky.
Takže rok to nikdo nezjistil a ti blbci by měli letět.
Reakce MS byla vskutku pohotová