개요
Math.hypot 함수는 가변적인 개수의 number 타입의 값을 인자로 전달받아 다음의 관계를 만족하는 k를 반환한다.
Math.hypot()
hypot은 삼각형의 빗변을 의미하는 hypotenuse를 줄인 단어이다. 직각 삼각형의 빗변이 아닌 a, b의 길이를 이용하여 빗변 c의 길이를 구하는 피타고라스 방정식은 다음과 같다.
피타고라스 방정식으로부터 생각하면 Math.hypot 함수는 number 타입의 a, b를 전달받아서 c에 해당하는 값을 반환하는 함수이다. 특이한 점으로는 입력할 수 있는 number의 개수가 2개로 고정되어 있지 않다는 점이다.
인자를 하나만 입력하면 절댓값 함수인 Math.abs()와 동일한 결과를 반환한다.
Math.hypot(-100); // 100
Math.abs(-100); // 100
여러 개의 인자가 주어진 경우, 주어진 인자의 제곱합과 같아지는
Math.hypot(100, 100, 100, 100); // 200
또, Number.MAX_VALUE( 대략
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot
Math.sqrt(1e200*1e200 + 1e200*1e200); // Infinity
Math.hypot(1e200, 1e200); // 1.414213562373095e+200
덧
hypot을 통해 얻은 값으로 대소 비교를 수행하여야 하는 경우, 소수점 이하의 수에 대한 비교가 정확하게 이루어지지 않을 수 있다. 주어진 값의 범위가 크지 않다면 제곱근을 취하지 않고 제곱된 수를 그대로 비교하는 방식을 활용할 수 있다. 이 방법으로 수를 정수 범위 안에서 비교할 수 있다.
아래는 연습문제
https://www.acmicpc.net/problem/20949
참고
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot
Math.hypot() - JavaScript | MDN
The Math.hypot() static method returns the square root of the sum of squares of its arguments. That is,
developer.mozilla.org