Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Umí Excel počítat?
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Software
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
AmarokCZ



Založen: Dec 20, 2006
Příspěvky: 2838
Bydliště: Poličské krystalinikum

PříspěvekZaslal: so říjen 02 2010, 17:17    Předmět: Citovat

Věděl by někdo jak ošetřit problém aniž bych v možnostech nastavoval "přesnost dle zobrazení"??
Sešit s náznakem problému je tady.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Hill
Administrátor


Založen: Sep 10, 2004
Příspěvky: 19531
Bydliště: Jičín, Český ráj

PříspěvekZaslal: so říjen 02 2010, 17:31    Předmět: Citovat

A proč ti to nastavení vadí?
Použij pomocný sloupec po výpočet argumentu a zaokrouhlování třeba na 6 míst. On totiž ARC... neumí ze vzorce počítat, pokud je úhel těsně kolem 0 a atgumentem funkce je vzorec.
Já bych řekl, že tě to zase nijak časově nezatíží ve srovnání s tím, kolik ti zabere třeba jen sestavování vzorců, neřkuli krmení tabulky daty.


Naposledy upravil Hill dne so říjen 02 2010, 17:46, celkově upraveno 2 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AmarokCZ



Založen: Dec 20, 2006
Příspěvky: 2838
Bydliště: Poličské krystalinikum

PříspěvekZaslal: so říjen 02 2010, 17:36    Předmět: Citovat

Vadí, protože přesnost je pak na *****
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Hill
Administrátor


Založen: Sep 10, 2004
Příspěvky: 19531
Bydliště: Jičín, Český ráj

PříspěvekZaslal: so říjen 02 2010, 17:54    Předmět: Citovat

S pomocnou buňkou A5, z níž si bere konečný vzorec argument pro ARCCOS, to máš tady na obrázku.
Nastavil jsem zaokrouhlení na 12 platných míst, ale můžeš i víc.



pomocna_bunka.jpg
 Komentář:

Stáhnout
 Soubor:  pomocna_bunka.jpg
 Velikost:  16.84 kB
 Staženo:  51 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AmarokCZ



Založen: Dec 20, 2006
Příspěvky: 2838
Bydliště: Poličské krystalinikum

PříspěvekZaslal: so říjen 02 2010, 19:58    Předmět: Citovat

Diky Hille, sice to není ideálně jednoduché řešení, ale funguje to. Mě by tohle ani nenapadlo, protože pomocné buňky jsem si neoblíbil a pokud to není nutné z formálního důvodu (např. pokud je pomocná hodnota i výstupem), tak vše dám do jednoho dlouhého vzorce.
Času to moc nezabere, ale každý čas navíc se hodí na něco jiného Smile

Je taky docela zajímavý, že tu chybu to dělá jen při určitém čísle v A1 ... mno prostě mrkvo$oft Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
tomasjedno



Založen: Oct 11, 2008
Příspěvky: 6068
Bydliště: ZZ9 Plural Z Alpha

PříspěvekZaslal: so říjen 02 2010, 21:26    Předmět: Citovat

Problém není ve vložené funkci, ale v tom, že Excel počítá na víc míst než ukazuje a výsledek výpočtu který se jeví jako 0,3 může být v Excelí interpretaci skutečnosti třeba 0,3000000000000004 nebo 0,2999999999999995 a člověk nemá šanci to zjistit. Proto mu zřejmě vyšel argument arccos větší než 1 a to se mu nelíbí. Řešením je vložit tam na argument arccos zaokrouhlovací funkci.

Excel dělá i horší věci. Zkuste si pomocí funkce MOD zkontrolovat, jestli je vaše rodné číslo beze zbytku dělitelné 11 (což by, pro narozené po 1.1.1954, mělo být). Můj Excel 2002 ani 2003 SP2 to neumí. Největší celé číslo, pro které to umí, je 1476395007.

Edit: nebo lépe, funkce MOD(Číslo, Dělitel) funguje jen pro
1) je-li dělitel kladný a (-Dělitel*2^27 +1)<Číslo<(Dělitel*2^27)
2) je-li dělitel záporný a (Dělitel*2^27)<Číslo<(-Dělitel*2^27 -1)
To znamená, že počítá celočíselný podíl jen na 27 bitů, zatímco normálně počítá na 50+ bitů (tuším že 54, ale zobrazuje zaokrouhlení na 50).
P.S. 2^27 = 134 217 728


Naposledy upravil tomasjedno dne so říjen 02 2010, 23:22, celkově upraveno 2 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AmarokCZ



Založen: Dec 20, 2006
Příspěvky: 2838
Bydliště: Poličské krystalinikum

PříspěvekZaslal: so říjen 02 2010, 22:00    Předmět: Citovat

tomasjedno: to co píšeš je pravda, ale to, že počítá na konečný počet míst a pak díky tomu místo 1 je 1.00...x je problém EXCELu a mělo by to být nějak ošetřené, protože to znemožňuje normální práci (ale to nikomu asi ještě nikdy nevadilo).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Hill
Administrátor


Založen: Sep 10, 2004
Příspěvky: 19531
Bydliště: Jičín, Český ráj

PříspěvekZaslal: so říjen 02 2010, 22:19    Předmět: Citovat

Už jsem na podobné potíže taky někdy narazil, ale ošetřuji si je tím, že si udělám pomocné buňky, ať se v tom později, až zapomenu, co jsem to vlastně tvořil, snadněji zorientuju bez složitého dekódování dlouhých vzorců. Aspoň mám jasno, co který sloupec vůbec dělá, a ty pomocné můžu skrýt.

Obávám se, že Excel používá algoritmus ukládání čísel daný operačním systémem, takže ta chyba nevzniká v Excelu.

Už u osmibitů způsobovalo ukládání čísel s plovoucí desetinnou čárkou problémy (například u Spectra se vyměňovaly EPROMky s Basicem kvůli takovým chybám, jako PRINT -1 způsobil, že na obrazovce se objevilo číslo 65535, protože všechna čísla se ukládala jako mantissa a za ní exponent). Při převodu na "lidskou" interpretaci zkrátka k této chybě došlo.
Kdyby tehdy bylo možné definovat předem přesnost čísla, problému by si nejspíš dlouho nikdo nevšiml.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3697
Bydliště: Praha

PříspěvekZaslal: ne říjen 03 2010, 22:23    Předmět: Citovat

Tvar uložených čísel v pohyblivé řádové čárce si řídí každý program sám, a kompilátor si je ukládá v závislosti na tom, jakou matematickou knihovnu používá. Přesné výpočty v dekadické soustavě s pohyblivou řádovou čárkou jsou v principu možné při uložení čísel v BCD a k tomu existují různé knihovny jako třeba:

* Borland's C++ BCD class
* Zortech's C++ BCD class
* Zortech's C++ money class

Samozřejmě jsou výpočty v BCD daleko pomalejší, a proto, pokud nejde třeba o peníze nebo není jiný důvod , se to běžně nepoužívá.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: po říjen 04 2010, 8:00    Předmět: Citovat

mtajovsky napsal(a):

* Zortech's C++ money class

A opravdu je to pro výpočty v pohyblivé řádové čárce?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3697
Bydliště: Praha

PříspěvekZaslal: po říjen 04 2010, 13:43    Předmět: Citovat

Jak se vezme, v podstatě ano, jenom to není v BCD, ale rozděleno na long dollars a int cents. No a mezi nimi je ta čárka. V každém případě bude:

$4.1 - $.1 - $4 = $0

přesně.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: po říjen 04 2010, 14:39    Předmět: Citovat

Takže je ta čárka pevná, nikoliv pohyblivá.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3697
Bydliště: Praha

PříspěvekZaslal: po říjen 04 2010, 15:30    Předmět: Citovat

Chjo... rozcvička na večer, čekají mě 2 dcery a manželka. Mad
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
PotPalo



Založen: May 13, 2009
Příspěvky: 4983
Bydliště: BA-Petržalka :(

PříspěvekZaslal: pá říjen 08 2010, 23:00    Předmět: Citovat

Takže malá skúška v Exceli:

do C10 napíš:
=CHOOSE(C9+1;"nula";"jeden";"dva";"tri";"štyri";"pät";"šesť";"sedem";"osem";"deväť")
Teraz do C9 skús písať čísla od 0 do 9. Funguje to, že? Tak teraz do C9 napíš:
=INT((C8*10-INT(C8*10))*10)
Teraz skús písať do C8 čísla s dvoma desatinnými miestami. Malo by to brať v úvahu druhé desatinné miesto a vypísať ho slovom. Lenže pri niektorých číslach to ukazuje zle! Napríklad pri 1234,56. Skús prísť na to, kde je chyba...

Alebo: do A1 napíš 1234,56 a do A2 napíš 1234. Do A3 napíš =A1-A2. Vidíš výsledok 0,56. Tak skús klikať na "Pridať desatinné miesto" (aspoň 15 krát), to sa budeš diviť. Samozrejme si nastav širší stĺpec, aby sa tam tie desatiny zmestili.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
tomasjedno



Založen: Oct 11, 2008
Příspěvky: 6068
Bydliště: ZZ9 Plural Z Alpha

PříspěvekZaslal: so říjen 09 2010, 0:19    Předmět: Citovat

Co tě na tom překvapuje?
To už by tě mohlo překvapit i to, že SIN(PI()) = 1,22514845490862E-16

Pokud potřebuješ, aby argument funkce bylo přesně to, co vidíš, vždycky si to musíš zaokrouhlit - jinak tam riskuješ chybu v 16.-17. číslici mantisy.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Software Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.19 sekund