O víkendu se svět sociálních sítí bavil jednoduchým příkladem. Než budete číst dál, schválně si ho zkuste spočítat: 9 + 0 + 9 + 0 + 9 * 0 + 9 =. Kolik vám vyšlo?
Předpokládám, že jste příklad spočítali správně (ne každému se to o víkendu zdařilo). O správnou odpověď se v případě nejistoty můžete podělit v komentáři. Psát ji sem nebudu.
Pokud si někdo o víkendu nebyl výsledkem jistý, sáhl po kalkulačce. Nešťastní ti, kteří používají operační systém Microsoft Windows 7. Spustili si kalkulačku a hle, správného výsledku se nedočkali.
Ve standardní kalkulačce v Microsoft Windows 7 je skutečně chyba. Ne jediná. Další příklad, s kterým si kalkulačka neporadí je například √4 – 2 = .
Docela síla. U Microsoftu to už ale lepší nebude. Oprava zřejmě nepřijde a tak je dobré mít tuto chybu alespoň na paměti.
První chyba je jen tím, že jednoduchá kalkulačka nezná priority operací, přesněji řečeno operátor ihned způsobí provedení předchozí operace, vlastnost, které mají i jednoduché kalkulačky (myslím tím placky do ruky). Druhá chyba je jen o ukládání čísel v paměti, to co vyšlo je defakto nula. Takových „chyb“ se ve světě počítačů dá najít neúrekom.
S příčinami chyb Marku souhlas. Pro jejich výskyt však nevidím důvod. Zvlášť v případě oficiální součásti Windows. Co jsem zkoušel jednoduchou kalkulačku v mobilu a v Ubuntu tak počítají správně. Toto je ostuda Microsoftu, která občas může zavařit jejich uživatelům.
Zajímavé je, že v normální kalkulačce ta první chyba je, ale ve vědecké už to funguje v pořádku.
Co je na tom. Normální kalukačka je jednoduchá jako „kupecká“ od vietnamců, která taky nezná priority, závorky apod.
Vědecká už má víc funkcí a s prioritama normálně pracuje. Ale chápu, že šlo o plivnutí si na hloupej MS, tak se zmínka o tomhle nehodí do krámu.
rypec: Jako plivnutí na MS to prosím neber. Jde skutečně o chybu, kterou by nemělo být těžké opravit (základní webová kalkulačka počítá správně – http://www.math.com/students/calculators/source/basic.htm ) a která může zmást uživatele. V příkladu jsou jednoduché počty, na kterých je chyba zřejmá. Pokud se kalkulačka použije k počtům s čísly o několik řádů vyššími, uživatel si chyby všimnout nemusí.
Fakt je, že kalkulačku z windows jsem teď použil po mnoha letech poprvé :-). Nějaký pátek používám SpeedCrunch, protože umí opravdu hodně a je multiplatformní.
Ne, to opravdu není chyba. To je prostě zásobníková kalkulačka, která neřeší priority operací atp. Totéž dělá drtivá většina hardwarových kalkulaček a snad nikdo jim to nemá za zlé. Jediná potenciální chyba je, že to nahoře ukazuje historii tak, že to vytváří iluzi sofistikovanějšího vyhodnocování.
(Ale aby mě nikdo nebral za slovo, to druhé už jako chyba vypadá…)
To druhe ( sqrt(16)-4=-4e-20 ) je sice chyba, ale je sposobena nepresnostou pri vypocte odmocniny zo 16. A ta chyba je az na dvadsiatom desatinnom mieste. To sa pri vypocte vysledku funkcie bezne stava a je to sposobene zaokruhlovanim. Pokial predpokladate, ze pri vypocte odmocniny zo 16 ma pocitac nejaku tabulku, ktora mu povie, ze to je 4, tak to tak nie je. Pocitac pouziva nejaky rad, ktory mu hodi, ze odmocnina zo 16 nie je 4 ale 3,99999999999999999996. A ak od tohto cisla odratate 4, dostanete -0,00000000000000000004; co je vysledok, ktory vyhodila kalkulacka. Za chybu mozno povazovat iba neuprednostnovanie nasobenia pred scitanim z prveho prikladu, ale nepresne vysledky na dvadsiatom desatinnom mieste su vzdy v systeme pouzivania pocitacov.
Trochu laciné kopnutí do Microsoftu, ne? :) Každý OS má nějaké chyby a zrovna v MS je to chyba u kalkulačky.
Trefně řečeno – „tváří se jako že umí víc než tomu ve skutečnosti je“ a tím bych zhodnotil i zbytek tohoto systému. :-D Chyba to podle mě je, nemá se to tak tvářit. :-)
Ktomu kopani do Win…
Ta kalkulacka takto funguje po celou dobu fungovani windows (zkouseno od 3.0, starsi verze jsem (aktivne) nepouzival). Je to „emulace“ bezne dostupnych kalkulatoru dane doby, vcetne jejich logiky. Takze standard se chova stejne hloupe, jako se chovalo 90% bezneho levneho HW v te dobe (ono je muzete koupit i dnes, jako takovou tu veklou A5 placku na scitani (pro deti a obchodniky :) )). Proste ihned provede ukon.
Vedecka prioritu resi (resila) celou dobu.
Co se tyka SW je to jen drobna grmatiky. Pokud by to nekoho zajimalo zacit muze na http://cs.wikipedia.org/wiki/Bezkontextov%C3%A1_gramatika
Bohuzel prvotni ucel je nemast uzivatele a chovat se stejne hloupe jako se chova emulovana vec, aby nebyl chudak uzivatel zmatenej a nestezoval si, ze se to chova jinak. A verte, ze vysvetlit lidem, proc by nemli trvat na „hloupem chovani“ jen kvuli tomu, ze jsou na to zvykli je …