Start · Sprachen · JavaScript · Referenz · Math.SQRT2

Math.SQRT2

Eigenschaft

Die statische Konstante <code>Math.SQRT2</code> enthält die Quadratwurzel von 2, ungefähr <code>1.4142135623730951</code>.

seit JavaScript ES1 (Baseline: alle Browser, Node.js) Kategorie: method-property

Signatur

Math.SQRT2

Beschreibung

Math.SQRT2 ist eine statische, schreibgeschützte Dateneigenschaft des Math-Objekts. Sie enthält die Quadratwurzel von 2 als Gleitkommazahl mit doppelter Genauigkeit (IEEE 754): 1.4142135623730951.

Man braucht die Konstante überall dort, wo √2 in Formeln vorkommt, zum Beispiel bei der Diagonale eines Quadrats (Seitenlänge × √2), bei Drehungen um 45°, beim Normalisieren von diagonalen Bewegungsvektoren in Spielen, bei Papierformaten nach DIN 476 (Seitenverhältnis 1 : √2) oder in der Audio-Technik, wo Effektivwert und Spitzenwert einer Sinusschwingung um den Faktor √2 auseinanderliegen.

Weil SQRT2 eine statische Eigenschaft ist, greift man immer über Math.SQRT2 darauf zu. Math ist kein Konstruktor, und die Eigenschaft ist weder beschreibbar noch aufzählbar noch konfigurierbar. Gegenüber Math.sqrt(2) spart man sich einen Funktionsaufruf und macht die Absicht im Code klarer. Der Wert ist in beiden Fällen identisch.

Rückgabewert

Typ
number
Beschreibung
Die Quadratwurzel von 2 als number: 1.4142135623730951.

Beispiele

Wert auslesen und mit Math.sqrt vergleichen

console.log(Math.SQRT2);
console.log(Math.SQRT2 === Math.sqrt(2));
console.log(Math.SQRT2 * Math.SQRT2);
1.4142135623730951 true 2.0000000000000004

Diagonale eines Quadrats berechnen

const diagonale = (seite) => seite * Math.SQRT2;

console.log(diagonale(10).toFixed(2));
console.log(`Kachel 256 px → Diagonale ${Math.round(diagonale(256))} px`);
14.14 Kachel 256 px → Diagonale 362 px

Diagonale Bewegung in einem Spiel normalisieren

const speed = 5;

const move = (dx, dy) => {
  // Bei diagonaler Bewegung wäre man sonst um den Faktor √2 zu schnell
  const factor = dx !== 0 && dy !== 0 ? 1 / Math.SQRT2 : 1;
  return { x: dx * speed * factor, y: dy * speed * factor };
};

console.log(move(1, 0));
console.log(move(1, 1));
{ x: 5, y: 0 } { x: 3.5355339059327373, y: 3.5355339059327373 }

Spitzenwert aus Effektivwert (Wechselspannung)

const effektivwert = 230; // Volt
const spitzenwert = effektivwert * Math.SQRT2;
console.log(`${spitzenwert.toFixed(1)} V`);
325.3 V

// Wichtig · Fallstricke

  • Schreibgeschützt: Math.SQRT2 = 2 hat keine Wirkung. Im nicht-strikten Modus wird die Zuweisung stillschweigend ignoriert, im Strict Mode (auch in ES-Modulen und Klassen) wirft sie einen TypeError.
  • Gleitkomma-Genauigkeit: √2 ist irrational, deshalb ist der gespeicherte Wert nur eine Näherung. Math.SQRT2 ** 2 ergibt 2.0000000000000004 und nicht genau 2. Für Vergleiche solltest du eine Toleranz verwenden, zum Beispiel Math.abs(a - b) < Number.EPSILON.
  • Für 1/√2 gibt es die eigene Konstante Math.SQRT1_2 (≈ 0,7071). Sie ist lesbarer als 1 / Math.SQRT2.
  • Die Groß- und Kleinschreibung zählt: Math.sqrt2 ergibt undefined, und damit werden Rechnungen zu NaN.
  • Die Konstante wird in allen JavaScript-Umgebungen unterstützt, also in allen Browsern, Node.js, Deno und Bun.