Start · Sprachen · JavaScript · Referenz · Math.sqrt()

Math.sqrt()

Methode

Die statische Methode <code>Math.sqrt()</code> gibt die (nicht-negative) Quadratwurzel einer Zahl zurück.

seit JavaScript ES1 – Baseline: alle Browser Kategorie: method-property

Signatur

Math.sqrt(x)

Beschreibung

Die statische Methode Math.sqrt() berechnet die Quadratwurzel einer Zahl. Für jedes x ≥ 0 liefert sie das eindeutige y ≥ 0, für das y * y === x gilt (im Rahmen der Gleitkomma-Genauigkeit). Bei negativen Zahlen ist das Ergebnis NaN, weil JavaScript keine komplexen Zahlen kennt.

Typische Anwendungen sind Abstandsberechnungen (Satz des Pythagoras), Vektorlängen und deren Normierung, Standardabweichung in der Statistik oder Primzahltests, bei denen man nur bis zur Wurzel der Zahl prüfen muss.

Da sqrt() eine statische Methode von Math ist, ruft man sie immer als Math.sqrt() auf. Math ist kein Konstruktor – new Math() ist nicht möglich.

Das Argument wird vor der Berechnung in eine Zahl umgewandelt (ToNumber). Strings wie "16" funktionieren daher, BigInt-Werte dagegen lösen einen TypeError aus.

Parameter

Name Typ Default Beschreibung
$x Pflicht number Die Zahl, deren Quadratwurzel berechnet werden soll. Nicht-numerische Werte werden in eine Zahl umgewandelt.

Rückgabewert

Typ
number
Beschreibung
Die nicht-negative Quadratwurzel von x. Für x < 0 oder nicht umwandelbare Werte NaN; Math.sqrt(-0) ergibt -0, Math.sqrt(Infinity) ergibt Infinity.

Beispiele

Grundlegende Werte und Sonderfälle

console.log(Math.sqrt(9));
console.log(Math.sqrt(2));
console.log(Math.sqrt(1));
console.log(Math.sqrt(0));
console.log(Math.sqrt(-1));
console.log(Math.sqrt(-0));
console.log(Math.sqrt(Infinity));
console.log(Math.sqrt("16"));
3 1.4142135623730951 1 0 NaN -0 Infinity 4

Abstand zwischen zwei Punkten (Pythagoras)

const distance = (a, b) => {
  const dx = b.x - a.x;
  const dy = b.y - a.y;
  return Math.sqrt(dx * dx + dy * dy);
};

const player = { x: 1, y: 2 };
const enemy = { x: 4, y: 6 };

console.log(distance(player, enemy));
5

Standardabweichung einer Messreihe

const standardDeviation = (values) => {
  const mean = values.reduce((sum, v) => sum + v, 0) / values.length;
  const variance = values.reduce((sum, v) => sum + (v - mean) ** 2, 0) / values.length;
  return Math.sqrt(variance);
};

const responseTimes = [2, 4, 4, 4, 5, 5, 7, 9];
console.log(standardDeviation(responseTimes));
2

Effizienter Primzahltest

const isPrime = (n) => {
  if (n < 2) return false;
  const limit = Math.floor(Math.sqrt(n));
  for (let i = 2; i <= limit; i++) {
    if (n % i === 0) return false;
  }
  return true;
};

console.log([2, 15, 17, 97, 100].map(isPrime));
[ true, false, true, true, false ]

// Wichtig · Fallstricke

  • Negative Zahlen: Math.sqrt(-4) liefert NaN, nicht 2i. Prüfe Eingaben vorher oder nutze bei Bedarf Math.abs().
  • Gleitkomma-Genauigkeit: Ergebnisse sind IEEE-754-Doubles. Math.sqrt(2) ** 2 ergibt 2.0000000000000004 – vergleiche daher mit einer Toleranz (z. B. Number.EPSILON) statt mit ===.
  • Überlauf bei Abständen: Bei sehr großen oder sehr kleinen Koordinaten kann dx * dx + dy * dy überlaufen bzw. auf 0 fallen. Math.hypot(dx, dy) ist hier robuster (aber oft etwas langsamer).
  • Performance: Wenn nur Abstände verglichen werden, kann man auf die Wurzel verzichten und die quadrierten Werte vergleichen.
  • BigInt: Math.sqrt(16n) wirft einen TypeError; für ganzzahlige Wurzeln großer Zahlen ist ein eigener Algorithmus (z. B. Newton-Verfahren) nötig.
  • Math.sqrt(x) und x ** 0.5 liefern meist dasselbe, Math.sqrt ist jedoch per Spezifikation exakt gerundet und bei -0 und -Infinity abweichend ((-Infinity) ** 0.5 ergibt Infinity, Math.sqrt(-Infinity) dagegen NaN).