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 ;)