los Math.hypot() La función devuelve la raíz cuadrada de la suma de los cuadrados de sus argumentos, es decir:

Math.hypot(v1,v2,,vnorte)=I=1nortevI2=v12+v22++vnorte2 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

Sintaxis

Math.hypot()
Math.hypot(value0)
Math.hypot(value0, value1)
Math.hypot(value0, value1,..., valueN)

Parámetros

value1, value2, ...
Números.

Valor devuelto

La raíz cuadrada de la suma de cuadrados de los argumentos dados. Si al menos uno de los argumentos no se puede convertir en un número, NaN es regresado.

Descripción

Para calcular la hipotenusa de un triángulo rectángulo, o la magnitud de un número complejo, se usa la fórmula Math.sqrt(v1*v1 + v2*v2), donde v1 y v2 son las longitudes de los catetos del triángulo, o los componentes real y complejo del número complejo. La distancia correspondiente en 2 o más dimensiones se puede calcular agregando más cuadrados debajo de la raíz cuadrada: Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4).

Esta función hace que este cálculo sea más fácil y rápido; llama Math.hypot(v1, v2) , o Math.hypot(v1, v2, v3, v4, ...).

Math.hypot también evita problemas de desbordamiento / subdesbordamiento si la magnitud de sus números es muy grande. El número más grande que puede representar en JS es Number.MAX_VALUE, que es alrededor de 10308. Si sus números son mayores de aproximadamente 10154, tomar el cuadrado de ellos resultará en Infinito. Por ejemplo, Math.sqrt(1e200*1e200 + 1e200*1e200) = Infinity. Si utiliza hypot() en cambio, obtienes una mejor respuesta: Math.hypot(1e200, 1e200) = 1.4142...e+200 . Esto también es true con números muy pequeños. Math.sqrt(1e-200*1e-200 + 1e-200*1e-200) = 0, pero Math.hypot(1e-200, 1e-200) = 1.4142...e-200.

Porque hypot() es un static método de Math, siempre lo usas como Math.hypot(), más que como un método de Math objeto que creasteMath no es un constructor).

Si no se dan argumentos, el resultado es +0. Si alguno de los argumentos es ± Infinito, el resultado es Infinito. Si alguno de los argumentos es NaN (a menos que otro argumento sea ± Infinito), el resultado es NaN. Si al menos uno de los argumentos no se puede convertir en un número, el resultado es NaN.

Con un argumento, Math.hypot() es equivalente a Math.abs().

Ejemplos de

Usando 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)

Polyfill

Un enfoque ingenuo que no maneja problemas de desbordamiento / subdesbordamiento:

if(!Math.hypot) Math.hypot=function()var y =0, i = arguments.length, containsInfinity =false;while(i--)return containsInfinity ?Infinity: Math.sqrt(y)

Un polyfill que evita subdesbordamientos y desbordamientos:

if(!Math.hypot) Math.hypot=function()var max =0;var s =0;var containsInfinity =false;for(var i =0; i < arguments.length;++i)var arg = Math.abs(Number(arguments[i]));if(arg ===Infinity)
      containsInfinity =trueif(arg > max)
      s *=(max / arg)*(max / arg);
      max = arg;
    s += arg ===0&& max ===0?0:(arg / max)*(arg / max);return containsInfinity ?Infinity:(max ===1/0?1/0: max * Math.sqrt(s));;

Especificaciones

Especificación
Especificación del lenguaje ECMAScript (ECMAScript)
# sec-math.hypot

Compatibilidad del navegador

Escritorio Móvil
Cromo Borde Firefox explorador de Internet Ópera Safari WebView Android Chrome Android Firefox para Android Opera Android Safari en IOS Internet de Samsung
hypot 38 12 27 No 25 8 38 38 27 25 8 3,0

Ver también

  • Math.abs()
  • Math.pow()
  • Math.sqrt()