영광의 시대!/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
반응형