このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
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 2015年7月.
Math.hypot() は静的メソッドで、各引数の二乗の合計値の平方根を返します。
In this article
試してみましょう
console.log(Math.hypot(3, 4));// 予想される結果: 5console.log(Math.hypot(5, 12));// 予想される結果: 13console.log(Math.hypot(3, 4, 5));// 予想される結果: 7.0710678118654755console.log(Math.hypot(-5));// 予想される結果: 5構文
Math.hypot()Math.hypot(value1)Math.hypot(value1, value2)Math.hypot(value1, value2, /* …, */ valueN)引数
value1, …,valueN数値です。
返値
与えられた引数の二乗和の平方根を返します。引数のいずれかが ±Infinity の場合、Infinity を返します。 それ以外の場合、引数の少なくとも 1 つがNaN であるか、またはNaN に変換された場合、NaN を返します。引数が指定されていない場合、またはすべての引数が ±0 の場合、0 を返します。
解説
直角三角形の斜辺や、複素数の大きさを計算するにはMath.sqrt(v1*v1 + v2*v2) という公式を用い、ここで v1 と v2 は三角形の辺の長さであったり、複素数の実数と複素数部分であったりします。二次元またはそれ以上の次元における対応する距離は、Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4) のように平方根の下にさらに多くの平方を足すことで計算できます。
この関数はこの計算をより簡単に、より高速に行います。Math.hypot(v1, v2) またはMath.hypot(v1, /* …, */, vN) を呼び出すだけです。
Math.hypot はまた、数値が非常に大きい場合のオーバーフロー/アンダーフローの問題を回避します。 JS で表現できる最大の数はNumber.MAX_VALUE で、これは約 10308 です。数字の大きさが約 10154 よりも大きい場合、その 2 乗を取ると無限大になります。例えば、Math.sqrt(1e200*1e200 + 1e200*1e200) = Infinity です。代わりにhypot() を使うと、Math.hypot(1e200, 1e200) = 1.4142...e+200 となり、より良い答えが得られます。これは非常に小さな数の場合にも当てはまります。Math.sqrt(1e-200*1e-200 + 1e-200*1e-200) = 0 ですが、Math.hypot(1e-200, 1e-200) = 1.4142...e-200 となります。
引数が 1 つの場合、Math.hypot() はMath.abs() と同等です。Math.hypot.length は 2 であり、これは少なくとも 2 つの引数で扱うことを示す弱いシグナルです。
hypot() はMath の静的メソッドなので、常にMath.hypot() として使用し、自分でMath オブジェクトを生成してそのメソッドとして使用しないでください。 (Math にはコンストラクターがありません)。
例
>Math.hypot() の使用
Math.hypot(3, 4); // 5Math.hypot(3, 4, 5); // 7.0710678118654755Math.hypot(); // 0Math.hypot(NaN); // NaNMath.hypot(NaN, Infinity); // InfinityMath.hypot(3, 4, "foo"); // NaN, +'foo' => NaN なのでMath.hypot(3, 4, "5"); // 7.0710678118654755, +'5' => 5Math.hypot(-3); // 3、Math.abs(-3) と同じ仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-math.hypot> |