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 !!!
Nejen Javascript. I windowsovska kalkulacka nebo Open Office Calc. Zrejme to pocitaj zpusobem, kterej provadi nedefinovanou operaci.
Héj lidi !
Tohle mi nespočítá ani Windowsácká kalkulačka:
Schválně zkuste:
-8.4 ^ -3.7 --> Neplatná vstupní data.
Ach jo. Co mi zase uteklo.
Jaký použít algoritmus pro tyto operace ?
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 No co, mrkvosoft
hehe.. já si pamatuju, že snad ještě do verze ve Win95 počítala Billova kalkulačka: 3,11 - 3,1 = 0
A vieš, že vlastne nemáš pravdu?
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.
No hej, tak to zhrniem, ze pocitat takuto mocninu zo zaporneho cisla je nezmysel a kalkulacka rata spravne - vysledok nie je v realnych cislach definovany.
Můžete mi teda hlepnout s tímto ?
Předpokládejme že buňku B73 měním v proměnné aktualniHodnota.
Samozřejmě jen v intervalu kladných čísel.
Je pak správně zapsán tento vzorec ? Excel to žere. Že bych tam nakonec dal jiný vzorec ?
Co jsem se přehlédl ?
Stačí když mi napovíte v nějakém stravitelném tvaru rovnici:
=$G$62*($G$63+EXP($G$64*(B73+$G$65)))
To jediné mi stačí.
předem dík.
Funkce EXP znamena e^neco. Ty vzorce v excelu a javascriptu jsou naprosto odlisny.
Jo. Už jsem si to dohledal jinde. ok.