Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Pracovní prostředí => Téma založeno: vasicekabc 31 Března 2011, 08:27:47

Název: Calc - zaokrouhlování
Přispěvatel: vasicekabc 31 Března 2011, 08:27:47
Normálně kancelářské programy nepotřebuji, ale nyní jsem si potřeboval vytvořit jednoduchý přehled zásob a tržeb (zrcadlo). Tržby za jednotlivé položky potřebuji zaokrouhlovat na celé koruny dolů (tzn. i 8,99 = 8,00), pro což jsem použil funkci INT. Vše mi funguje skvěle, jen pokud mi dojde k situaci, že se násobí 0,15 x 600, výsledek je vždy 89. Jak je to možné a co s tím?

Výraz mám nastaven jako =INT(G12*H12), přičemž v buňkách G12 ani H12 žádné zaokrouhlování neproběhlo.
Název: Re: Calc - zaokrouhlování
Přispěvatel: Evžen Šubrt 31 Března 2011, 10:26:07
Nemám calc po ruce, abych tuhle chybu reprodukoval. Jinak to vypadá na klasický problém s omezenou přesností reálných čísel v počítači (ač 0,15 vypadá v desítkové soustavě celkem dobře, ve dvojkové to může být číslo s extrémně dlouhým desetinným rozvojem či dokonce číslo periodické). Potom výsledkem výpočtu 600*0,15  může být třeba číslo 89,99999999998, z čehož INT samozřejmě udělá 89.

Co s tím? No, třeba pokud je těch 0,15 představuje 15%, zadat to přímo jako 15%, nebo jako 15 a vzorec upravit na INT(600*15/100).
Název: Re: Calc - zaokrouhlování
Přispěvatel: Krysař 31 Března 2011, 15:39:00
A co je v tech bunkach G12 a H12? Neni to odkaz na neco, co je zaokrouhlovane?
Kdyz napises rucne 0.15 a 600 a nechas spocitat, tak vyjde co? (viz priloha)

[attachment deleted by admin]
Název: Re: Calc - zaokrouhlování
Přispěvatel: vasicekabc 31 Března 2011, 20:02:41
Pokud to zadám přímo čísly, tak vyjde 90 jak má. Žádné zaokrouhlení ale v dílčích buňkách není. 600 je zadáno napevno a 0,15 je rozdíl dvou buňek bez zaokrouhlení (1,00 - 0,85), tyto dvě hodnoty jsou opět vstupy zadané ručně.
Název: Re: Calc - zaokrouhlování
Přispěvatel: Stue 01 Dubna 2011, 08:10:47
"Chyba" je podle mě v tom, že v sešitu je u některé z buněk použito "zaokrouhlení" pomocí tlačítka na liště <přidat nebo odstranit desetinné místo>. Takto upravená buňka se pak může jevit v pracovní ploše jako celé číslo, ale ve skutečnosti má za desetinnou čárkou nějaké drobné.
Hodnotu každé buňky je třeba zkontrolovat v Panelu vzorců.

Navíc můžeš zkusit jednoduché ověření. Otevři NOVÝ sešit a bez použití jakýchkoliv formátovacích úprav zadej ona čísla 1; 0.85; jejich rozdíl; 600; součin INT(rozdíl * 600). Výsledek bude zcela jistě 90.
Název: Re: Calc - zaokrouhlování
Přispěvatel: vasicekabc 30 Dubna 2011, 08:14:00
Po nějakém čase se vracím k problému, zkouším co navrhuje Stue, zkouším to v openoffice i v libreoffice na novém sešitě bez formátování a pořád dostávám 89.

viz.http://www.uloz.to/8825069/zrcadlo-ods (http://www.uloz.to/8825069/zrcadlo-ods)