2021.3.4(목)
어제 오늘 코플릿 문제를 풀면서 Math의 메서드인 Math.abs, Math.floor 를 접하게 되었다.
그래서 이 참에 Math 메서드 중 자주 사용되는 Math.abs, Math.floor, Math.ceil, Math.round, Math.random, Math.max, Math.min, Math.pow, Math.sqrt를 간단히 정리해 보아야겠다. 자료는 이웅모 님의 자바스크립트의 탁월한 저서 "모던 자바스크립트 Deep Dive"와 mdn 문서를 참고하였다.
Math.abs(): 인수로 전달받은 숫자의 절대값을 반환한다. 절댓값은 반드시 양수 혹은 0이어야 한다.
Math.abs(-1); // 1
Math.abs('-1'); // 1
Math.abs([-1]); // 1
Math.abs('string'); // NaN
Math.abs({}); // NaN
Math.floor, Math.ceil, Math.round는 한 family로 같이 연관시켜서 익히면 좋다. Math.floor는 floor가 바닥이라는 의미이므로 소수점 이하를 무조건 내림한 정수를 반환한다. Math.ceil은 Math.floor의 반대 개념으로 ceil이 천정이라는 의미이니 소수점 이하를 무조건 올림 한 정수를 반환한다. Math.round는 반올림 한다.
Math.floor() : 인수로 전달받은 숫자의 소수점 이하를 내림한 정수를 반환
Math.floor(1.2); //1
Math.floor(1.9); //1
Math.floor(-1.9); //-2
Math.floor(-9.1); //-10
Math.ceil() ; 인수로 전달받은 숫자의 소수점 이하를 올림한 정수를 반환
Math.ceil(1.1); //2
Math.ceil(1.9); //2
Math.ceil(-1.8); //-1
Math.ceil(-1.2); //-1
Math.round() ; 인수로 전달받은 숫자의 소수점 이하를 반올림한 정수를 반환
Math.round(1.2); //1
Math.round(1.7); //2
Math.round(-1.2); //-1
Math.round(-1.8); //-2
Math.random() : 임의의 램던 숫자를 반환한다. 즉 0~1 사이의 실수이다. 0은 포함되지만 1은 포함되지 않는다.
보통 1 ~ 10 범위의 램덤 정수를 원할 때 사용한다.
1. Math.random으로 0 ~ 1 사이 랜덤 실수를 구한 다음, 10을 곱해 0 ~ 10 미만의 랜덤 실수를 구한다
2. 0 ~ 10 미만의 랜덤 실수에 1를 더해 1 ~ 10의 랜덤 실수를 구한다.
3. Math.floor로 1 ~ 10의 랜덤 정수로 변환한다.
Math.random(); //0.6553195665095666
Math.random(); //0.7040161781565413
Math.random()*10; //7.757240383981625
Math.random()*10; //4.598770174580384
Math.floor(Math.random()*10+1); //8
Math.floor(Math.random()*10+1); //3
Math.floor(Math.random()*10+1); //4
Math.max(), Math.min() : Math.max()는 전달받은 인수 장 가장 큰 수를 반환하고, Math.min()는 가장 작은 수를 반환한다.
Math.max(1,4); //4
Math.max(1,5,9,33,55,100); //100
Math.min(1,5,9,33,55,100); //1
//배열을 인수로 받은 경우에는 스프레드 문법을 사용한다.
Math.max(...[1,2,3]); //3
Math.min(...[1,2,3]); //1
Math.pow(base, exponent): 첫 인수를 밑(base), 두번째 인수를 지수(exponent)로 거듭제곱한 결과를 반환한다.
Math.pow(2,3); //8
Math.pow(2,4); //16
Math.pow(2,5); //32
Math.pow(2,6); //64
Math.sqrt(): 인수로 전달받은 수의 제곱근을 반환한다.
Math.sqrt(4); //2
Math.sqrt(9); //3
Math.sqrt(16); //4
Math.sqrt(2); //1.4142135623730951
댓글