Autor | Zpráva | ||
---|---|---|---|
Timy Profil |
#1 · Zasláno: 27. 1. 2008, 23:46:07
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 |
#2 · Zasláno: 27. 1. 2008, 23:56:16
Hádaj - PI nie je presná konštanta, takže chyba zaokrúhľovania...
|
||
Timy Profil |
#3 · Zasláno: 28. 1. 2008, 00:04:35
Aha, no to je značně dementní. Takže to jednoduše zaokrouhlím a bude to, díky.
|
||
sicario Profil |
#4 · Zasláno: 28. 1. 2008, 11:48:11
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 |
#5 · Zasláno: 28. 1. 2008, 13:29:40
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…
|
||
Časová prodleva: 16 let
|
0