Portál AbcLinuxu, 9. srpna 2025 16:07


Závažné chyby ve funkcích vzorců v OpenXML

Ecma standard Microsoft OpenXML je ještě horší, než se zdálo. Rob Weir prozkoumal část (325 stran) definující chování funkcí pro vzorce v tabulkách a našel mnoho závažných chyb. Goniometrické funkce nemají určeno, zda pracují s radiány nebo stupni, jiné funkce nepočítají s regionálními rozdíly, další zase mají nesprávný popis výpočtu funkce.

13.7.2007 13:19 | Luboš Doležel (Doli) | IT novinky


Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

13.7.2007 13:39 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Odpovědět | Sbalit | Link | Blokovat | Admin
Pokud se nepletu, tak toto ODF neřeší vůbec a přitom už je ISO standardem.
oVirt | SPICE
Luboš Doležel (Doli) avatar 13.7.2007 13:48 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
To je fakt, jak ale Ecma mohla schválit tak závadnou specifikaci jako OpenXML?
michich avatar 13.7.2007 13:48 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Rob Weir tam argumentuje, že je lepší to nespecifikovat vůbec, než specifikovat to špatně. U ODF se na tom pracuje, ale chtějí to mít pořádně.
13.7.2007 15:08 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Odpovědět | Sbalit | Link | Blokovat | Admin
Moc mne to nepřekvapuje. Kdysi jsme s kolegy dělali web pro jednu leasingovou společnost a oni tam mimo jiné chtěli formulář pro výpočet splátek. Vzal jsem papír a tužku a za pár minut jsem měl vzoreček - jenže ten produkoval jiné výsledky než excelový sheet, který jsme od nich pro kontrolu dostali (podle něj to počítali oni). Kolega znalý Excelu se jal rozebírat ten sheet (byl zaheslovaný, ale to nebyl velký problém :-) ) a nakonec jsme zjistili, že na to používají funkci přímo toho Excelu. Ta sice fungovala správně, ale sheet do ní coby měsíční úrok dosazoval dvanáctinu ročního. A jak jsme zjistili, bylo to na základě nápovědy k oné funkci v Excelu: psalo se tam, že jako příslušný parametr se zadává měsíční úrok, což je (podle Microsoftu) jedna dvanáctina ročního úroku. Od té doby přistupuji k čemukoli, co spočítá Excel, se značnou nedůvěrou.
13.7.2007 15:36 met | skóre: 9 | Praha
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
13.7.2007 16:36 Veterán
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Otázkou je, o jakou funkci Excelu se jedná. V Čechách se úroky z úroků většinou počítají 360x v roce, ale jsou i případy, kdy se bere pouze roční úrok. Pak by se skutečně jednalo o 1/12 tohoto úroku. Vzorce v Excelu obsahují také hodnotu "Pper - celkový počet úročených období anuity. Když dostanete například čtyřletou půjčku na automobil s měsíčními splátkami, má půjčka 4*12 (neboli 48) období. Do vzorce zadejte 48 pro pper (právě opsáno z nápovědy). Je tam také napsáno: "Roční úroková sazba je vydělena 12, protože je úrok připisován každý měsíc. Počet plateb je získán vynásobením počtu let, ve kterých jsou prováděny platby, hodnotou 12." Je ale vidět, že tyto vzorce jsou dělány pro americký trh. Český trh s 360 úrokovacími a 12 splátkovými obdobími by vyžadoval poněkud komplikovanější vzorec. To vše ale není chyba Excelu, ale lidí, kteří dané funkce používají.
13.7.2007 16:44 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
V Čechách se úroky z úroků většinou počítají 360x v roce.

Pokud jde o pravidelné měsíční splátky, stačí úrok počítat měsíčně, tím, že to budete počítat denně, se nic nezmění.

…ale jsou i případy, kdy se bere pouze roční úrok. Pak by se skutečně jednalo o 1/12 tohoto úroku.

Ne. Měsíční úrok prostě nemůže být dvanáctina ročního, protože pak dostanete naprosto nekonsistentní výsledky. Je-li roční úrok a (myslím tím koeficient, tj. setinu úrokové sazby v procentech), pak měsíční musí být (1 + a)^(1/12) - 1, přes to vlak nejede.

To vše ale není chyba Excelu, ale lidí, kteří dané funkce používají.

Pokud se v dokumentaci k Excelu píše, že měsíční úrok je dvanáctina ročního a že se má funkce takto používat - a tehdy to tam opravdu bylo, viděl jsem to na vlastní oči - pak je to chyba Excelu.

13.7.2007 21:14 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Sice je to blbe, ale bezne se to tak dela. Sam jsem prosel uplne stejnym vyvojem (prace s tuzkou a papirem a nasledna konfrontace s excelem). A to zpusob "prevodu" mezi rocnim, mesicnim a dennim urokem byla oproti ostatnim vecem jeste celkem sranda. Tehdejsi zazitky jsem si umistil do skatulky "Divy ekonomie" a dal o tom radeji nepremyslim.
14.7.2007 18:40 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Ježkovy zraky. Proč to nemůže fungovat takhle?

Milý kliente, naše banka se rozhodla zrušit blbosti jako procenta, nebudeme již nadále patlat dohromady exponenciální a lineární průběh, nebudeme vymýšlet zmatky s účtovacími obdobími a budeme uznávat jedinou časovou jednotku, a to sekundu. Takže stav vašeho účtu si vypočtete takto:
a*exp(1.55e-9*t)
kde a je váš počáteční vklad a t je čas.
Jo a ještě něco - jestli tušíte, jak jsou goniometrické funkce definované, o nějakých "stupních" by vás ani nenapadlo uvažovat.
Vaše banka
15.7.2007 02:37 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Protože by to bylo přece moc složité. ;-)
vencour avatar 15.7.2007 23:20 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML

Banka snad má nějakou metodiku, platnou pro všechny, jak se počítá úroková míra? To přece nemůže mít každý jinak?

Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
15.7.2007 17:26 Jiří (BoodOk) Kadeřávek | skóre: 19 | blog: BoodOk | Brno
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Hledejte rozdíl mezi jednoduchým a složitým úročením. Nicméně mne tato diskuse nepřekvapuje, divili byste se, kolik pracovníků v leasingových společnostech vůbec netuší, že takové pojmy vůbec existují. Kde jsou ty doby, kdy každý úvěrář a obchodník fasoval HP 12C.
Věda má v sobě určitou zpupnost, že čím dokonalejší techniku vyvineme, čím více se dozvíme, tím lepší budou naše životy.
15.7.2007 17:49 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Dnes fasuje PC s Excelem… :-)
the.max avatar 13.7.2007 22:36 the.max | skóre: 46 | blog: Smetiště
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Odpovědět | Sbalit | Link | Blokovat | Admin
...a proc me to vubec neprekvapuje?
KERNEL ULTRAS Fan Team || Sabaton - nejlepší učitel dějepisu || Gentoo - dokud nás systemd nerozdělí.
14.7.2007 22:27 Jim
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Odpovědět | Sbalit | Link | Blokovat | Admin
Třeba to bude tím, že ECMA International je ve skutečnosti ACME Corporation. Produkty na nic, ovšem ihned. Takový Coyote by o tom mohl vyprávět.
15.7.2007 14:37 SBE
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Odpovědět | Sbalit | Link | Blokovat | Admin
Citaze z nápovědy k OOo Calc:

COS Vrátí kosinus zadaného čísla (úhlu). Syntaxe: COS(Číslo) Číslo je hodnota, jejíž kosinus bude vypočítán.

Citace z nápovědy Excel 2007

COS(číslo)

Číslo je úhel v radiánech, jehož kosinus chcete zjistit.

Poznámka

Je-li úhel uveden ve stupních, převedete ho na radiány vynásobením hodnotou PI()/180 nebo pomocí funkce RADIANS.

V Calc, člověk opravdu neví, jaké jednotky použít, v Excel 2007 to najde alespoň v nápovědě. Uživateli je šumák nějaký standard, uživatel chce kvalitní aplikaci s kvalitní nápovědou.
15.7.2007 16:42 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
AFAIK všechny tabulkové kalkulátory počítají v radiánech. Zatím.
Luboš Doležel (Doli) avatar 15.7.2007 17:08 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Tak ten problém nahlaste autorům nápovědy.
15.7.2007 21:50 lefti | skóre: 18 | blog: OneAndOnlyTrueBlog
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
o to je to horsi, ze to v dokumentaci k formatu neni ty uzivateli
15.7.2007 21:53 lefti | skóre: 18 | blog: OneAndOnlyTrueBlog
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
ale urcite je ta situace pro vyvojare office aplikaci daleko lepsi nez pred dokumentaci (i kdyz ne dokonalou) majoritniho formatu ...
16.7.2007 07:28 juvi
Rozbalit Rozbalit vše Re: Závažné chyby ve funkcích vzorců v OpenXML
Odpovědět | Sbalit | Link | Blokovat | Admin
Když se tu bavíte o úročení a 'lízingovkách', mám taky jednu perličku: Byl jsem se podívat na nová auta a nechal si vyjet splátkový kalendář: akontace 10-60%, doba splácení 3-5 let. Ke svému překvapení jsem zjistil, že ať mám akontaci 10% a splácení 5 let, nebo akontaci 60% a splácení 3 roky, zaplatím celkem přibližně stejnou částku... Údajně leasing ČSOB (KIA finance).

Založit nové vláknoNahoru


ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.