Zdravím robím kalkulačku v jave a mam taký problém keď mam sinus a cosinus tak nieje presná. Vyhodí mi iny vysledok ako kalkulacka v PC viete mi poradiť ako to spravím aby mi hádzala presný vysledok ? (robim v programe netbeans) Ďakujem. :-)
Fórum › Java
Kalkulačka nepresnosť
Ahoj,
bez toho aniz tady alespon das tvuj java kod ti asi tezko nekdo rekne kde je presne problem.
Nicmene u vypoctu hodnot techto funkci mohou vysledek ovlivnit 2 dulezite faktory:
- numericka metoda pouzita k vypoctu hodnoty dane funkce.
- presnost (pocet bajtu / delka mantisy) promennych, ktere se pouzivaji k vypoctu (vcetne vysledku) a s tim spojena zaokrouhlovaci chyba
Trochu se to pokusim vysvetlit:
K vypoctu hodnot ruznych matematickych rad, funkci apod. se pouzivaji numericke metody. Pro jednu funkci muze existovat vice ruznych metod, ktere se lisi v rychlosti, presnosti, pripadne definicnim oboru (kdyz je to mimo tak algoritmus ztraci presnost, nebo zcela nefunguje atd.). Z toho tedy plyne ze pokud dva programy pouziji jinou metodu pro vypocet stejne funkce tak se muze vysledek mirne lisit.
Dale tam hraje roli presnost cisel. Vetsina numerickych metod zahrnuje desitky nebo klidne i tisice aritmetickych operaci jako napr. nasobeni a deleni. Cisla v pocitaci jsou ulozena s konecnou presnosti, ktera je dana velikosti pameti, ktera je pro cislo vyhrazena. Napriklad pokud budu delit 1 / 6 tak vysledkem je 0,16666666... ale kdyz to zadas do kalkulacky, tak ti vypadne 0,166666667, protoze vysledek ma omezenou presnost a dojde k zaokrouhleni. Cim vetsi ma vysledek presnost, tim dale bude 7 ve vysledku, ale vzdy tam bude (pokud tedy algoritmus neni schopen pracovat se zlomky, coz by u numerickych metod bylo ponekud komplikovane).
Pokud se takto zaokrouhleny vysledek pouzije jako vstup jine aritmeticke operace , ktera opet skonci nejakym zaokrouhlenim, tak se ti tam zacne skladat zaokrouhlovaci chyba. Velikost chyby bude zalezet na poctu operaci, typu operaci a presnosti cisel, ktere byly pouzity.
#2 Petr
Nezvěřejnil jej proto, že je neskutečně kvalitní a tajný a to je ten důvod. Chrání si know-how ~ ~
2Lukas: Příště si prostuduj API, je nutno zadat vstup v radiánech. - na kalkulačce je nutno nastavit na RAD a už ti to bude sedět.
http://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#sin-double-
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Nepřesnost desetinných čísel — založil tom*p
Kalkulačka — založil Lukáš
Kalkulacka — založil mravenec
Kalkulacka — založil pawkin
Kalkulačka — založil Anakin
Moderátoři diskuze