Math.hypot()
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает во многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Статический метод Math.hypot() возвращает квадратный корень из суммы квадратов своих аргументов. То есть,
Попробуйте
console.log(Math.hypot(3, 4)); // Expected output: 5 console.log(Math.hypot(5, 12)); // Expected output: 13 console.log(Math.hypot(3, 4, 5)); // Expected output: 7.0710678118654755 console.log(Math.hypot(-5)); // Expected output: 5
Синтаксис
Math.hypot() Math.hypot(value1) Math.hypot(value1, value2) Math.hypot(value1, value2, /* …, */ valueN)
Параметры
-
value1, …,valueN - Числа.
Возвращаемое значение
Квадратный корень из суммы квадратов заданных аргументов. Возвращает Infinity, если любой из аргументов равен ±Infinity. В противном случае, если хотя бы один из аргументов является или преобразуется в NaN, возвращается NaN. Возвращает 0, если аргументы не заданы или все аргументы равны ±0.
Описание
Для вычисления гипотенузы прямоугольного треугольника или величины комплексного числа используется формула Math.sqrt(v1*v1 + v2*v2), где v1 и v2 — длины катетов треугольника или вещественная и мнимая составляющие комплексного числа. Соответствующее расстояние в 2 или более измерениях можно вычислить, добавив больше квадратов под квадратным корнем: 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, возведение их в квадрат приведет к Infinity (Бесконечности). Например, 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.
С одним аргументом Math.hypot() эквивалентен Math.abs(). Math.hypot.length равно 2, что косвенно указывает на то, что он предназначен для обработки как минимум двух параметров.
Поскольку hypot() является статическим методом Math, вы всегда используете его как Math.hypot(), а не как метод созданного вами объекта Math (Math не является конструктором).
Примеры
Использование 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)
Спецификации
| Спецификация |
|---|
| Спецификация языка ECMAScript® 2027 # sec-math.hypot |
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
hypot |
38 |
12 |
27 |
25 |
8 |
38 |
27 |
25 |
8 |
3.0 |
38 |
8 |
1.0.0 |
1.0 |
0.12.0 |
Смотрите также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot