Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno JavaScript - funkce Math.pow(x, y)

Nemáte tušení proč to háže výsledek NaN (not a number)?

Toto funguje:

a = 2;
b = 3;
alert (Math.pow(a, b));   // Vytiskne 8

Toto funguje a dela to co cekam.

Tento slozitejsi pripad ale zlobi:

aktualniHodnota = 1;
exponent = 0.01500555*(aktualniHodnota-248.404809)
mocnenec = 0.042958904*(-195.5623156) 
exponent=exponent-0; // jistota je jistota
mocnenec=mocnenec-0; // jistota je jistota
alert (mocnenec) // obsahuje -8.401142741878102
alert (exponent) // obsahuje -3.7124452316899496

alert ( Math.pow(mocnenec, exponent) );  //  Hodnota je  NaN !!!


Nevíte někdo kde je zakopaný pes a jak to opravit ? ]:(

Aha !!! Toto funguje. Tak to je asi nekde problem v zaporném argumentu:
aktualniHodnota = 1;
exponent = 0.01500555*(aktualniHodnota-248.404809)
mocnenec = 0.042958904*(-195.5623156) 
exponent=exponent-0; // jistota je jistota
mocnenec=mocnenec-0; // jistota je jistota
alert (mocnenec) // obsahuje -8.401142741878102
alert (exponent) // obsahuje -3.7124452316899496

alert ( Math.pow(-mocnenec, -exponent) );  //  Hodnota není  NaN, ale číslo !!!
Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
:-? Héj lidi ! Tohle mi nespočítá ani Windowsácká kalkulačka: Schválně zkuste: -8.4 ^ -3.7 --> Nepl…
Flash_Gordon 28.05.2006 00:16
Flash_Gordon
Naco potrebujes taketo mocniny? Je to divne ale mozno aj spravne. Skusil som aj -8.4 ^ -3.7 = -(1/8.…
MM.. 28.05.2006 02:22
MM..
A vieš, že vlastne nemáš pravdu? (-0.119)^(37 * 1/10) To vlastne znamená: (-0.119)^37^1/10, čiže a…
msx. 29.05.2006 09:19
msx.
No hej, tak to zhrniem, ze pocitat takuto mocninu zo zaporneho cisla je nezmysel a kalkulacka rata s… poslední
MM.. 29.05.2006 13:18
MM..

Naco potrebujes taketo mocniny?
Je to divne ale mozno aj spravne. Skusil som aj
-8.4 ^ -3.7 = -(1/8.4) ^ 3.7
tam je potom kladny mocnitel (t.j. je to ca. -0.119 ^ 3.7) a na to hadze win kalkulacka tiez invalid input. Mala by to ratat nekonecnym radom, takze nemal by vznikat problem pocas vypoctu, ale viem si predstavit ze toto mocnenie na "3.7" vytvara v skutocnosti nieco ako parnu odmocninu zo zaporneho cisla, co nie je samozrejme v realnych cislach definovane, proste ta fcia (x^3.7) nie je v tom intervale v realnych cislach definovana.
Mal by si si najprv ujasnit co chces ratat, a ci to ma naozaj riesenie, umocnovanie na 3.7 nie je pri opise reality moc potrebna operacia...

dodatok: teraz ma napadlo ze je to vlastne (-0.119)^(37 * 1/10), t.j. 10-ta odmocnina z -0.119^37, a kedze -0.119^37 je zaporne cislo tak z neho nemoze existovat 10-ta odmocnina, ale zaujimave je ze kalkulacka nevie ani 10-tu odmocninu z -0.119^38, co by teda mala vediet :-D No co, mrkvosoft :-D:-D

A vieš, že vlastne nemáš pravdu?

(-0.119)^(37 * 1/10)

To vlastne znamená:
(-0.119)^37^1/10, čiže ako hovoríš 10 odmocnina z ((-0.119)^37), lenže aj naopak:
(10 odmocnina z (-0.119))^37. Teraz si to premietneme na 38:
(-0.119)^38^1/10, čiže ako hovoríš 10 odmocnina z ((-0.119)^38), lenže aj naopak:
(10 odmocnina z (-0.119))^38. A tu je problém, pretože ono si to zrejme počíta takto:
(-0.119)^(38 * 1/10) a to sa proste nedarí vypočítať obidvoma spôsobmi viď vyššie.

Zpět do poradny Odpovědět na původní otázku Nahoru