Signatur
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
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"));
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));
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));
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));
// Wichtig · Fallstricke
- Negative Zahlen:
Math.sqrt(-4)liefertNaN, nicht2i. Prüfe Eingaben vorher oder nutze bei BedarfMath.abs(). - Gleitkomma-Genauigkeit: Ergebnisse sind IEEE-754-Doubles.
Math.sqrt(2) ** 2ergibt2.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 einenTypeError; für ganzzahlige Wurzeln großer Zahlen ist ein eigener Algorithmus (z. B. Newton-Verfahren) nötig. Math.sqrt(x)undx ** 0.5liefern meist dasselbe,Math.sqrtist jedoch per Spezifikation exakt gerundet und bei-0und-Infinityabweichend ((-Infinity) ** 0.5ergibtInfinity,Math.sqrt(-Infinity)dagegenNaN).