Math.hypot()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die statische Methode Math.hypot()
gibt die Quadratwurzel der Summe der Quadrate ihrer Argumente zurück. Das bedeutet,
Probieren Sie es aus
Syntax
Math.hypot()
Math.hypot(value1)
Math.hypot(value1, value2)
Math.hypot(value1, value2, /* …, */ valueN)
Parameter
value1
, …,valueN
-
Zahlen.
Rückgabewert
Die Quadratwurzel der Summe der Quadrate der gegebenen Argumente. Gibt Infinity
zurück, wenn eines der Argumente ±Infinity ist. Andernfalls, wenn mindestens eines der Argumente ist oder zu NaN
konvertiert wird, gibt es NaN
zurück. Gibt 0
zurück, wenn keine Argumente vorhanden sind oder alle Argumente ±0 sind.
Beschreibung
Die Berechnung der Hypotenuse eines rechtwinkligen Dreiecks oder der Betrag einer komplexen Zahl verwendet die Formel Math.sqrt(v1*v1 + v2*v2)
, wobei v1 und v2 die Längen der Schenkel des Dreiecks oder die realen und komplexen Komponenten der Zahl sind. Der entsprechende Abstand in zwei oder mehr Dimensionen kann durch Hinzufügen weiterer Quadrate unter der Quadratwurzel berechnet werden: Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4)
.
Diese Funktion macht diese Berechnung einfacher und schneller; Sie rufen Math.hypot(v1, v2)
oder Math.hypot(v1, /* …, */, vN)
auf.
Math.hypot
vermeidet auch Überlauf/Unterlauf-Probleme, wenn die Größenordnung Ihrer Zahlen sehr groß ist. Die größte Zahl, die Sie in JS darstellen können, ist Number.MAX_VALUE
, die etwa 10308 beträgt. Wenn Ihre Zahlen größer als etwa 10154 sind, führt das Quadrieren zur Infinity. Zum Beispiel, Math.sqrt(1e200*1e200 + 1e200*1e200) = Infinity
. Wenn Sie stattdessen hypot()
verwenden, erhalten Sie eine bessere Antwort: Math.hypot(1e200, 1e200) = 1.4142...e+200
. Das gilt auch für sehr kleine Zahlen. Math.sqrt(1e-200*1e-200 + 1e-200*1e-200) = 0
, aber Math.hypot(1e-200, 1e-200) = 1.4142...e-200
.
Mit einem Argument entspricht Math.hypot()
Math.abs()
. Math.hypot.length
ist 2, was schwach darauf hinweist, dass es dafür konzipiert ist, mindestens zwei Parameter zu verarbeiten.
Da hypot()
eine statische Methode von Math
ist, verwenden Sie es immer als Math.hypot()
und nicht als Methode eines von Ihnen erzeugten Math
-Objekts (Math
ist kein Konstruktor).
Beispiele
Verwendung von Math.hypot()
Math.hypot(3, 4); // 5
Math.hypot(3, 4, 5); // 7.0710678118654755
Math.hypot(); // 0
Math.hypot(NaN); // NaN
Math.hypot(NaN, Infinity); // Infinity
Math.hypot(3, 4, "foo"); // NaN, since +'foo' => NaN
Math.hypot(3, 4, "5"); // 7.0710678118654755, +'5' => 5
Math.hypot(-3); // 3, the same as Math.abs(-3)
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-math.hypot |
Browser-Kompatibilität
BCD tables only load in the browser