Signatur
Beschreibung
Math.SQRT1_2 ist eine statische, schreibgeschützte Dateneigenschaft des Math-Objekts. Sie enthält den Wert √½ ≈ 0,7071067811865476. Das ist derselbe Wert wie 1/√2 und wie Math.SQRT2 / 2.
Die Konstante kommt oft in Geometrie, Grafik und Signalverarbeitung vor. Beispiele: Sinus und Kosinus von 45° (π/4), das Normalisieren diagonaler Bewegungsvektoren in Spielen, die Umrechnung von Spitzenwert in Effektivwert (RMS) bei Sinussignalen und die Koeffizienten der Haar-Wavelet-Transformation.
Da Math kein Konstruktor ist, greift man immer direkt über Math.SQRT1_2 auf die Konstante zu. Eine Instanz braucht man nicht. Die Eigenschaft hat die Attribute nicht beschreibbar, nicht aufzählbar und nicht konfigurierbar.
Beispiele
Wert ausgeben und mit Alternativen vergleichen
console.log(Math.SQRT1_2);
console.log(Math.SQRT1_2 === 1 / Math.SQRT2);
console.log(Math.SQRT1_2 === Math.sqrt(0.5));
console.log(Math.cos(Math.PI / 4));
Diagonale Bewegung in einem Spiel normalisieren
const speed = 200; // Pixel pro Sekunde
const move = (dx, dy, dt) => {
// Bei diagonaler Eingabe wäre der Vektor sonst √2-mal zu lang
const factor = dx !== 0 && dy !== 0 ? Math.SQRT1_2 : 1;
return {
x: dx * factor * speed * dt,
y: dy * factor * speed * dt,
};
};
console.log(move(1, 0, 1));
console.log(move(1, 1, 1));
Effektivwert (RMS) einer Sinusspannung berechnen
const peakToRms = (peak) => peak * Math.SQRT1_2;
// Netzspannung: Spitzenwert ca. 325 V
console.log(peakToRms(325).toFixed(1) + ' V');
Schreibschutz der Konstante
'use strict';
try {
Math.SQRT1_2 = 1;
} catch (err) {
console.log(err instanceof TypeError);
}
console.log(Math.SQRT1_2);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
Math.SQRT1_2 = 1wird im nicht strikten Modus stillschweigend ignoriert. Im strikten Modus wirft sie einenTypeError. - Gleitkomma-Genauigkeit: Der Wert ist nur eine Annäherung an √½.
Math.SQRT1_2 * Math.SQRT1_2ergibt deshalb0.5000000000000001und nicht genau0.5. Zahlen vergleicht man daher besser mit einer Toleranz, etwaNumber.EPSILON. - Konstante statt Berechnung:
Math.SQRT1_2lesbarer und ein wenig schneller als ein wiederholter Aufruf vonMath.sqrt(0.5), liefert aber denselben Wert. - Kompatibilität: Die Konstante ist seit ECMAScript 1 Teil der Sprache und funktioniert in allen Browsern, in Node.js, Deno und Bun.