Math.hypot()

Статичний метод 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}

Спробуйте його в дії

Синтаксис

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 — це довжини сторін трикутника, або ж дійсна та уявна складові комплексного числа. Та ж відстань у двох чи більше вимірах може бути обчислена шляхом додавання нових квадратів під коренем: 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, оскільки +'foo' => NaN
Math.hypot(3, 4, "5"); // 7.0710678118654755, +'5' => 5
Math.hypot(-3); // 3, еквівалентно до Math.abs(-3)

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
hypot
Chrome Full support 38
Edge Full support 12
Firefox Full support 27
Internet Explorer No support No
Opera Full support 25
Safari Full support 8
WebView Android Full support 38
Chrome Android Full support 38
Firefox for Android Full support 27
Opera Android Full support 25
Safari on iOS Full support 8
Samsung Internet Full support 3.0
Deno Full support 1.0
Node.js Full support 0.12.0

Дивіться також