영광의 시대!/2022 개발자의 품격 부트캠프 1기
[개발자의품격][부트캠프][1기][9차시] JavaScript 주요 포인트 #7 | 내장 객체 - Math 객체(게시판 페이징, 가위바위보 게임)
DandyNow
2022. 2. 4. 16:41
728x90
반응형
JavaScript 주요 포인트 #7
내장 객체 - Math 객체
Math 객체는 숫자 자료형만 지원하고, 수학적인 상수와 내장 함수를 가진 객체이다. 다른 객체와 달리 생성자가 아니다.
round, ceil, floor, trunc, sign, pow, sqrt, abs, min, max, random 함수
<script>
// round() 반올림
console.log(Math.round(4.9)); // 5
// ceil() 무조건 올림
console.log(Math.ceil(4.2)); // 5
// ceil은 실무에서 게시판 페이징(총페이지 수 계산)에서 많이 사용한다.
// 예) 341(총 게시글 수), 10(페이지당 게시글 수)
let total = 341;
let countPerPage = 10;
let totalPage = Math.ceil(total / countPerPage);
console.log(totalPage); // 35(총 35개의 페이지가 필요하다.)
// floor() 무조건 내림
console.log(Math.floor(4.7)); // 4
console.log(Math.floor(-4.2)); // -5
// trunc() 소수점 이하 무조건 버림
console.log(Math.trunc(4.9)); // 4
console.log(Math.trunc(-4.2)); // -4
// sign 음수는 -1, 양수는 1, 0은 0
console.log(Math.sign(-4)); // -1
console.log(Math.sign(355)); // 1
console.log(Math.sign(0)); //0
// 이하의 함수는 실무에서 많이 사용하지는 않는다.
// pow() 제곱근
console.log(Math.pow(8, 2)); // 64
// sqrt() 루트값
console.log(Math.sqrt(64)); // 8
// abs() 무조건 양수값
console.log(Math.abs(-4.7)); // 4.7
// min(), max() 가장 작은 값, 가장 큰 값
console.log(Math.min(0, 2, 11, 5)); // 0
console.log(Math.max(0, 2, 11, 5)); // 11
// random() 0 이상 1 미만의 무작위 수
console.log(Math.random());
// 0~9 사이의 무작위 정수
console.log(Math.floor(Math.random() * 10));
// 1~10 사이의 무작위 정수
console.log(Math.floor(Math.random() * 10) + 1);
// 1~100 사이의 무작위 정수
console.log(Math.floor(Math.random() * 100) + 1);
// 범위 내 무작위 수(min 이상, max 이하) 반환
function getRandomInteger(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
console.log(getRandomInteger(1, 45));
</script>
ceil은 실무에서 "게시판 페이징시 총페이지 수 계산"을 위해 많이 사용한다. pow, sqrt, abs는 실무에서 많이 사용하지 않았다고 한다. random을 이용한 "범위 내 무작위 수를 반환하는 코드"는 유용하다. 이 코드를 이용해 가위바위보 게임을 간단히 만들어 본다.
Math.random 이용한 가위바위보 게임
// Math.random 이용해 작성한 "범위 내 무작위 수를 반환하는 코드"로 만든 가위바위보 게임
<body>
<button onclick="rspPlayer('가위');">가위</button>
<button onclick="rspPlayer('바위');">바위</button>
<button onclick="rspPlayer('보');">보</button>
<script>
// random 내장 객체 이용 가위, 바위, 보 게임
function getRandomInteger(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
function rspPlayer(userRsp) {
const rsp = ["가위", "바위", "보"];
// const randomNumber = getRandomInteger(0, 2);
const playerRsp = rsp[getRandomInteger(0, 2)];
console.log(playerRsp);
const userWinValue = {
가위: "보",
바위: "가위",
보: "바위",
};
console.log("user", userRsp);
console.log("player", playerRsp);
const result =
userRsp === playerRsp
? 0
: userWinValue[userRsp] === playerRsp
? 1
: -1;
console.log(result);
}
</script>
</body>
728x90
반응형