Autor Zpráva
Timy
Profil
Tohle nechápu:

trace(Math.sin(Math.PI/2));
> 1

trace(Math.sin(Math.PI/3));
> 0.866025403784439

trace(Math.sin(Math.PI/6));
> 0.5

trace(Math.sin(Math.PI));
> 1.22460635382238e-16

trace(Math.sin(2*Math.PI));
> -2.44921270764475e-16 


První tři výsledky jsou v pořádku, ale proč mi to u těch posledních dvou hází taková hauznumera, když to má hodit nulu?
tiso
Profil
Hádaj - PI nie je presná konštanta, takže chyba zaokrúhľovania...
Timy
Profil
Aha, no to je značně dementní. Takže to jednoduše zaokrouhlím a bude to, díky.
sicario
Profil
Goniometricke funkce se pocitaji iterativne. Vypocet se ukoncuje pokud je rozdil dvou po sobe nasledujicich iteraci mensi nez nejaka hodnota.

Hodnota pi je samozrejme omezena velikosti datoveho typu.

V matematickych softwarech pak vznikaji ruzne "zajimave" situace, kdy po nekolika sectenich a odectenich nedostaneme to co ocekavame.
Kdo by rekl, ze po provedeni 1.+0.2-0.3 dostaneme vysledek 0.89999999999999991? (testovano v pythonu a matlabu)
Timy
Profil
Mně jenom přišlo podivné, že Math.sin(Math.PI/6) mi vyhodí správný a přesný výsledek 0,5, ale Math.sin(Math.PI) mi už vyhodí nesmysly…

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: