Fórum Root.cz
		Hlavní témata => Windows a jiné systémy => Téma založeno: Petr  12. 08. 2013, 14:30:41
		
			
			- 
				Obcas clovek potrebuje neco overit na kalkulacce, no a kdyz firemni pc je na windowsech, tak sahnete po calc. 
 Onehda sem to udelal a nestacil se divit, (tan45*10)-10=? .. dle microsoftu to 0 neni, dle microsoftu to je 8,7456166731274737622753322863144e-38 ... jen pro upresneni tan45 = 1. Co sem procital fora, tak to je i u jinych operaci, bug uz trva dlouho. Tak opatrne, nespolehejte na calc.  ;D
- 
				Neremcej, to je zdokumentovaná featura (http://support.microsoft.com/kb/72540)  ;D ;D ;D
			
- 
				S tímhle bude má problém víc softwaru. Např. v Octave dostaneš:
 
 octave:1> tand(45)*10
 ans = 10.0000
 octave:2> (tand(45)*10)-10
 ans = -1.7764e-15
 
 
 BTW: „Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad“ – a že je to znát :-D
- 
				To neni tak uplne bug jako spis presnejsi nepresnost nez co mas treba na kalkulacce.
 
 Sice je kazdemu cloveku jasne, ze tan(45 stupnu)=1, ale pocitadlo to prevede nejdriv na radiany (nasobeni transdentelnanim cislem), potom pouzije obecny algoritmus pro vypocet, kde se to hemzi faktorialama a delenim, pricemz se vse uklada do pouhych 64 bitu (v zavislosti na platforme a nastavene presnosti). V dusledku predchozich kroku vyleze na konci priblizne 10, od ktere se odecte skutecna 10.
 Pokud to Linuxova kalkulacka spocita jinak, tak je bud implementovana jinak nez hardwarove (napr. decimalne v software - viz bc -l) nebo ma jinak nastavene zaokrouhlovani. Windos ma spoustu jinych chyb, ale tohle mezi ne nepatri :-)
 
 K tomu odkazu - princip je jeste jednoduseji vysvetlitelny - 12.51 neni presne vyjadritelne ve dvojkove soustave (obecne cokoliv jineho nez soucet (v patricnem rozpeti) celociselnych mocnin dvojky). Takze stejne jako (tupemu) cloveku nevyjde s tuzkou a papirem 4/3-1/3 jako jedna, tak pocitadlu nemusi vyjit 11/10-1/10 jako jedna.
 
- 
				Obcas clovek potrebuje neco overit na kalkulacce, no a kdyz firemni pc je na windowsech, tak sahnete po calc. 
 Onehda sem to udelal a nestacil se divit, (tan45*10)-10=? .. dle microsoftu to 0 neni, dle microsoftu to je 8,7456166731274737622753322863144e-38 ... jen pro upresneni tan45 = 1. Co sem procital fora, tak to je i u jinych operaci, bug uz trva dlouho. Tak opatrne, nespolehejte na calc.  ;D
 
 
 Jde o bug při operacích v plovoucí řádové čárce. Stejná chyba je v jakémkoliv programu používajícím FPU. Co je však zajímavé, že v KCalc vyjde jiné číslo :-)
 
 KCalc: −1,57009245868e-15
 Octave: -1.7764e-15
 Firefox: -1.7763568394002505e-15
 
 Doporučuji používat webovou vědeckou kalkulačku (http://web2.0calc.com/) nebo Wolfram|Alpha (http://www.wolframalpha.com)
- 
				To neni tak uplne bug jako spis presnejsi nepresnost nez co mas treba na kalkulacce.
 
 Sice je kazdemu cloveku jasne, ze tan(45 stupnu)=1, ale pocitadlo to prevede nejdriv na radiany (nasobeni transdentelnanim cislem), potom pouzije obecny algoritmus pro vypocet, kde se to hemzi faktorialama a delenim, pricemz se vse uklada do pouhych 64 bitu (v zavislosti na platforme a nastavene presnosti). V dusledku ...
 
 To co popisujes, je samozrejme jasne, ale pro rypnuti do wokynek, sem to musel postnout.  ;D ... Nicmene, staci, ze tam je e-38, da se rict, nula jak vysita.  :)
- 
				Galculator: -1.7763568394e-15. Takze Widle to maji i presneji.
			
- 
				Ovšem přátelé, největší tragédie je, že moje cca 20 let stará kalkulačka Casio fx-6200G s tím nemá sebemenší problém.  ::)
			
- 
				Proč tak komplikovaně? Přepni si na jednoduchou kalkulačku a spočítej 1+2x3=, potom totéž proveď v režimu vědecké...
 Podobně zajímavé výsledky dávají některé kalkulačky při tomhle: 1/7=x7=
- 
				RealCalc (Android): 0
 
 Ja to rikal, ze android je lepsi nez widle! :-)
- 
				Ovšem přátelé, největší tragédie je, že moje cca 20 let stará kalkulačka Casio fx-6200G s tím nemá sebemenší problém.  ::)
 
 
 Podeziral bych, ze inteligentne navrzena kalkulacka bude v sobe mit nejakou tabulku s vysledky pro hodnoty funkci, u kterych muze typicky vzniknout chyba, napriklad tangens 45=1 a ne 1-1.11022302463e-16
- 
				Moje 30 let stara Casio fx-3600P to spocita spravne. Prepnu se do DEG modu a TAN(45)=1. Za tech 30 let jsem akorat do ni musel 2x koupit baterii. Dokonce ma i 38 programovatelnych kroku a umi pocitat numericky integraly.
			
- 
				Moje 30 let stara Casio fx-3600P to spocita spravne. Prepnu se do DEG modu a TAN(45)=1. Za tech 30 let jsem akorat do ni musel 2x koupit baterii. Dokonce ma i 38 programovatelnych kroku a umi pocitat numericky integraly.
 
 
 tan(45) = 1 mi spočítá všechno, co jsem tu jmenoval. tan(45) - 1 = 0 je ale něco jiného ;)
- 
				8,7456166731274737622753322863144e-38 ... jen pro upresneni tan45 = 1
 
 
 To není bug, ale feature strojového počítání. Podobné číslo vyjde na každém výpočetním stroji, který uchovává mezivýsledky v plovoucí řádové čárce. Rozdíl je jenom v tom, jak moc se na konci zaokrouhluje.
 
 Prepnu se do DEG modu a TAN(45)=1.
 
 
 TAN(45) vyjde 1 i v calc.exe
 Musíš vyhodnotit celý výraz (TAN(45)*10)-10 ne jenom TAN(45)
- 
				Proč tak komplikovaně? Přepni si na jednoduchou kalkulačku a spočítej 1+2x3=, potom totéž proveď v režimu vědecké...
 Podobně zajímavé výsledky dávají některé kalkulačky při tomhle: 1/7=x7=
 
 
 KCalc:
 1+2×3 = 7
 1/7= ×7= (pro ověření chybného zaokrouhlení:) -1 = 0
 
 Octave:
 1+2×3 = 7
 1/7= ×7= -1 = 0
 
 Firefox:
 1+2×3 = 7
 1/7= ×7= -1 = 0
 
 Takže tak snadné to fakt není
- 
				TAN(45) vyjde 1 i v calc.exe
 Musíš vyhodnotit celý výraz (TAN(45)*10)-10 ne jenom TAN(45)
 
 
 Výraz jsem vyhodnotil celý... 20 let stará kalkulačka stále vede.  ::)
- 
				Proč tak komplikovaně? Přepni si na jednoduchou kalkulačku a spočítej 1+2x3=, potom totéž proveď v režimu vědecké...
 Podobně zajímavé výsledky dávají některé kalkulačky při tomhle: 1/7=x7=
 
 Jednoduchá kalkulačka emuluje stupidní kalkulačky, které se stále prodávají. Ty neznají priority a běžně počítají asi na stejný počet míst, jako zobrazují na displeji. Také při operaci 99999999+1 nepřejdou do exponenciálního vyjádření čísla, ale výpočet označí za chybu.
- 
				http://en.wikipedia.org/wiki/Loss_of_significance
			
- 
				gnome-calculator 3.8.1 a vysledek 0  ;)