Spec-Zone.ru › JavaScript

Math.hypot()

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает во многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Статический метод Math.hypot() возвращает квадратный корень из суммы квадратов своих аргументов. То есть,

𝙼𝚊𝚝𝚑.𝚑𝚢𝚙𝚘𝚝(v1,v2,…,vn)=∑i=1nvi2=v12+v22+…+vn2\mathtt{\operatorname{Math.hypot}(v_1, v_2, \dots, v_n)} = \sqrt{\sum_{i=1}^n v_i^2} = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2}

Попробуйте

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

Смотрите также

  • Полифилл Math.hypot в core-js
  • Math.abs()
  • Math.pow()
  • Math.sqrt()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API