JavaScript-Exponenten

Antworten:

46

Es gibt einen Potenzierungsoperator , der Teil der endgültigen ES7-Spezifikation ist. Es soll auf ähnliche Weise mit Python und Matlab funktionieren:

a**b // will rise a to the power b

Jetzt ist es bereits in Edge14, Chrome52 implementiert und auch mit Traceur oder Babel erhältlich.

Salvador Dali
quelle
130

Math.pow()::

js> Math.pow(12, 2)
144
Ignacio Vazquez-Abrams
quelle
2
Als Mathich die Methoden durchgesehen habe , habe ich gesehen exp, und als das nicht funktioniert hat, habe ich einfach aufgegeben. xD Hätte etwas weiter gehen sollen. Naja. Vielen Dank.
McKayla
9
@tylermwashburn: exp (x) ist die Zahl e, die auf die Potenz x angehoben wird, dh e ^ x. e = 2.71828182846 ...
Andreas Rejbrand
Weiß jemand, woher der Name "pow" kommt?
Luca Steeb
4
@steebchen: Wenn du nach der Herkunft des Namens fragst, ist es die Abkürzung für "Macht", wie in "Zwei zu Drei". Wenn Sie sich fragen, welche Sprache es als Funktion eingeführt hat, ist es wahrscheinlich eine der ersten existierenden.
Ignacio Vazquez-Abrams
9

Math.pow(x, y)funktioniert gut für x ^ y und wertet den Ausdruck sogar aus, wenn y keine ganze Zahl ist. Ein Code, auf den man sich nicht verlässt Math.pow, der aber nur ganzzahlige Exponenten auswerten kann, ist:

function exp(base, exponent) {
  exponent = Math.round(exponent);
  if (exponent == 0) {
    return 1;
  }
  if (exponent < 0) {
    return 1 / exp(base, -exponent);
  }
  if (exponent > 0) {
    return base * exp(base, exponent - 1)
  }
}
Anon Ymus
quelle
0

So führen wir Exponenten in JavaScript
gemäß MDN durch
Der Exponentiationsoperator gibt das Ergebnis der Erhöhung des ersten Operanden auf den zweiten Potenzoperanden zurück. Das heißt, var1 var2 in der vorhergehenden Anweisung, wobei var1 und var2 Variablen sind. Der Potenzierungsoperator ist richtig assoziativ: a ** b ** c ist gleich a ** (b ** c).
Zum Beispiel:
2**3// hier wird 2 3 mal mit 2 multipliziert und das Ergebnis ist 8.
4**4// hier wird 4 4 mal mit 4 multipliziert und das Ergebnis ist 256.

Mayank_VK
quelle