Autor | Zpráva | ||
---|---|---|---|
WalWerin Profil * |
#1 · Zasláno: 4. 11. 2005, 21:49:02
prosím, ještě bych potřeboval poradit jednu věc :( mám to trošku složitější, ale zjednoduším to: proč mi:
<?php print cos(deg2rad(90)) ?> vyplivne: 6.1230317691119E-017 místo nuly a to tyhle samí blbosti to píše při 180 a 270 stupních ? vím že otravuji ale stačila by mi česká stránka na které to najdu www.php.net je napůl anglicky a to je pro mě španělská vesnice |
||
kuratkoo Profil * |
#2 · Zasláno: 4. 11. 2005, 22:00:29
pouzivas jen cos? nebo i jine goniometricke f-ce?
|
||
kuratkoo Profil * |
#3 · Zasláno: 4. 11. 2005, 22:04:00
<?php
$uhel = 90 * 2 * pi / 360; print cos($uhel); ?> |
||
WalWerin Profil * |
#4 · Zasláno: 5. 11. 2005, 00:11:12
pouzívám všechno :) tan,cos i sin, ale tohle by melo fungovat pro vse ne? to je prevod z radianu na stupne, jenze me zajima co je prave to 6.1230317691119E-017 jinak díky už mohu pokračovat
|
||
PerToon Profil |
#5 · Zasláno: 5. 11. 2005, 00:16:02
No nevím, ale možná je to nějaká kravina kvůli zaokrouhlování Pí... Protože to číslo je dost malý aby něco znamenalo...
|
||
WalWerin Profil * |
#6 · Zasláno: 5. 11. 2005, 00:20:09
ne, nemohu protože mi to nejde :( mimochodem, nemohli bychom se domluvit na ICQ? bylo by to rychlejší a slibuji že už bych vícekrát neotravoval :)
|
||
WalWerin Profil * |
#7 · Zasláno: 5. 11. 2005, 00:21:59
já potřebuji jen co nejjednodušeji zjistit sinus, cosinus nebo tangens u urcitýho čísla, přece v tom nemůže být taková věda... je zvláštní že to blbne jen u 90,180 a 270ti stupnćh
|
||
WalWerin Profil * |
#8 · Zasláno: 5. 11. 2005, 00:33:24
a i když to přebedu ze stupní na radiany tak mi to vyhodi ten divnej tvar
<?php $stup = 90; $rad = 3.141592654 * $stup / 180; $cos = cos($rad); echo "$cos"; ?> napíše -2.0510342851735E-010 jen pro připomenutí ZŠ, 180 stupnů = pí radiánů jen pro ty kteří znají funkci v php ale zapoměli na goniometrii co sakra znamená to -2.0510342851735E-010 |
||
igamenir Profil |
#9 · Zasláno: 5. 11. 2005, 00:34:59
> je zvláštní že to blbne jen u 90,180 a 270ti stupnćh
A jak si to zjistil? U 90,180 a 270 víš že to má být přesně 0, resp. 1, tak si všimneš i těch e-17.Třeba to blbne všude, jenom si toho nevšimneš, protože přesnou hodnotu nevíš. |
||
igamenir Profil |
#10 · Zasláno: 5. 11. 2005, 00:36:40
> $rad = 3.141592654 * $stup / 180;
Nemůžeš se divit s tak nepřesným pi. Jak sem psal - je to zaokrouhlováním, tak zaokrouhluj. |
||
WalWerin Profil * |
#11 · Zasláno: 5. 11. 2005, 00:36:46
a kdyz dám třeba
<?php $stup = 90; $rad = 3.141592654 * $stup / 180; $cos = cos($rad); $vysledek = $cos * 10; echo "$vysledek"; ?> tak to vyplivne -2.0510342851735E-009 místo předešlého -2.0510342851735E-010 takže fakt nevim :( |
||
igamenir Profil |
#12 · Zasláno: 5. 11. 2005, 00:38:27 · Upravil/a: igamenir
OMG to jsou pokusy :)
-2.0510342851735E-010 = -2.05... * 10^-10 Po vynásobení 10 je pochopitelné, že se to sníží na 10^-9. |
||
WalWerin Profil * |
#13 · Zasláno: 5. 11. 2005, 00:39:26
pí je nekonečné takže se musí zaokrouhlit, ale co php bere jako přesnost? 100desetiných míst? 1000 ?
|
||
WalWerin Profil * |
#14 · Zasláno: 5. 11. 2005, 00:40:33
počkej, takže ty říkáš že to ....E-010 je jako ...na -10tou ?
|
||
igamenir Profil |
#15 · Zasláno: 5. 11. 2005, 00:40:55
Z manuálu:
M_PI = 3.14159265358979323846 |
||
PerToon Profil |
#16 · Zasláno: 5. 11. 2005, 00:40:59 · Upravil/a: PerToon
V Excelu se při =COS(RADIANS(90)) ukazuje naprosto stejný výsledek. 6.1230317691119E-017, netušil sem, že jste tak rychlí. Takže se nepočítá přesně pro 90° ale pro nějakou zaokrouhleninu, protože Pí. Takže s tou chybou se nedá dělat nic jinýho než to zaokrouhlit.
|
||
WalWerin Profil * |
#17 · Zasláno: 5. 11. 2005, 00:43:50
ale počkat cos 90 stupnu je 0, teda aspon mi to tak rika kalkulacka a pokud zaokrohlim cokolo z toho co mi to napsalo tak to nula nebude nikdy
|
||
WalWerin Profil * |
#18 · Zasláno: 5. 11. 2005, 00:46:33
ale ještě počkat ono 6.1230317691119 na -17 je přesně 0
|
||
igamenir Profil |
#19 · Zasláno: 5. 11. 2005, 00:46:57
-2.0510342851735E-010 = -0.0000000020510342851735
To je nádherná nula :) |
||
PerToon Profil |
#20 · Zasláno: 5. 11. 2005, 00:47:42
Když to zaokrouhlíš na patnáct desetinných míst, tak už to bude nula.
|
||
WalWerin Profil * |
#21 · Zasláno: 5. 11. 2005, 00:48:43
-2.0510342851735E-010 není přesně 0 ale já jsem vycházel z toho excelu a to je 0
|
||
WalWerin Profil * |
#22 · Zasláno: 5. 11. 2005, 00:49:37
6.1230317691119E-017
-2.0510342851735E-010 ono totiž není úplně stejný výsledek že PerToone :) |
||
PerToon Profil |
#23 · Zasláno: 5. 11. 2005, 00:49:57
Podle toho na kolik míst to zaokrouhlíš, v případě excelu podle toho, jaký máš formátování buňky.
|
||
WalWerin Profil * |
#24 · Zasláno: 5. 11. 2005, 00:51:49
-1.8369095307336E-016 cos 90 stupnu
-2.0510342851735E-010 cos 270 stupnu neni nahodou cos 90 a 270 stupnu v obou pripadech 0 ? jako možná že když se to vypočítá a zaokrouhlí na určitej počet desetinejch mist tak ta nula vyjde |
||
igamenir Profil |
#25 · Zasláno: 5. 11. 2005, 00:53:59
Přesně tak. Všechno se musí nějak zaokrouhlovat, když se počítá s iracionálníma (resp. reálnýma) číslama. Funkce v PHP zaokrouhlujou, funkce v Excelu zaokrouhlujou, kalkulačka zaokrouhluje ...
Nezbývá nic jiného než také zaokrouhlovat. |
||
WalWerin Profil * |
#26 · Zasláno: 5. 11. 2005, 00:55:45
no to je hezký že jsme na to přišli ale jak já udělam aby mi to vyplivlo jednoduse číslo v základnim tvaru? aby tam nebylo nakonci to E-xxx ale hned vypočítaný a zaokrouhlený třeba na 10 míst
|
||
igamenir Profil |
#27 · Zasláno: 5. 11. 2005, 00:57:57
E-xxx je zápis reálného čísla v původním tvaru - reálná čísla se ukládají jako mantisaEexponent.
Při formátovaném (tj se zaokrouhlením) výpisu by to mělo zmizet. |
||
WalWerin Profil * |
#28 · Zasláno: 5. 11. 2005, 00:59:34
dobrá zkusím
|
||
WalWerin Profil * |
#29 · Zasláno: 5. 11. 2005, 01:14:43
<?php
$cosstup = cos(deg2rad(90)); echo round($cosstup, 10); ?> napíše 0 díky chlapy |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0