본문 바로가기

자바스크립트

[자바스크립트] - Math 수학객체

 

브라우저에 NaN이 뜨면 오류표시다. 


 
  Math 수학객체  
 
 
자바스크립트의 내장 객체에는 수학과 관련된 기능과 상술을 제공하는 수학객체가 있다. 앞에서 배운 산술 연산만으로는 반올림, 올림, 최댓값 이런 것을 구할 수 없기 때문에
수학 객체를 이용하면 어려운 수학을 연산할 수 있다. 

< 수학객체의 메서드와 상수 >

1. Math.abs(숫자); ☆
  : 숫자의 절댓값을 반환한다. 값이 음수로 나왔을 때, 앞에 -마이너스를 뗄 때 자주 사용
2. Math.max(숫자1, 숫자2, 숫자3..) 
   : 숫자의 최댓값(가장 큰 수)을 반환한다. 
3. Math.min(숫자1, 숫자2, 숫자3..) 
    : 숫자의 최소값(가장 작은 수)을 반환한다.
4. Math.pow(숫자, 제곱근) 
    : 숫자의 거듭 제곱값을 반환한다. 
5. Math.random() ☆
    : 0 ~ 1 사이의 난수(랜덤한 숫자)를 반환한다. ex) 이벤트 경품 추천


6. Math.round(숫자)
    : 소수점 첫째 자리에서 반올림하여 정수를 반환한다. 
7. Math.ceil(숫자)☆
     : 소수점 첫째 자리에서 무조건 올림하여 정수를 반환 
8. Math.floor(숫자) ☆
   : 소수점 첫째 자리에서 무조건 내림하여 정수를 반환한다. 
9. Math.sqrt(숫자)
    : 숫자의 제곱근 값을 반환한다. 
10. Math.PI
    : 원주율 상수를 반환한다. 
 

     
      var num = 2.1234;

      var maxNum = Math.max(10, 5, 8, 3), //10 최댓값
        minNum = Math.min(10, 5, 8, 3), //3 최소값
        roundNum = Math.round(num), //2 첫째자리에서 반올림
        floorNum = Math.floor(num), //2 소수점 첫째 자리에서 무조건 내림
        ceilNum = Math.ceil(num), //3 소수점 첫째 자리에서 무조건 올림
        rndNum = Math.random(), //랜덤한 숫자
        piNum = Math.PI; //3.14...원주율
 

* 여러 개의 변수를 한꺼번에 선언할 때 아래처럼 , 로 구분하면 var를 한번만 쓰고도 여러 변수를 만들 수 있다. 
마지막 끝낼때는 ; 로 끝내기


Math.random( )

 
랜덤 메서드를 사용하면 0~1 사이의 난수가 발생한다. 
만약 0~1 사이가 아닌 임의로 지정된 구간의 숫자를 실수로 반환받고 싶다면 아래 공식을 이용한다. 

1. ex) 0 ~ 10 사이의 난수를 실수로 반환받을 때 
---------------------------------------------
Math.random()*10

난수는 0~1사이의 0.56같은 소수점으로 나오니깐 10을 곱해준다.
        

2. ex) 0 ~ 10 사이의 난수를 정수로 반환받을 때 
- 만약 0부터 10까지의 난수를 정수를 반환받고 싶다면 Math.floor를 이용한다.
floor()메서드는 값을 내리기 때문에 10이 아닌 11을 사용한다. 
---------------------------------------------
Math.floor(Math.random()*11) 




3. ex) 120~150 사이의 난수를 정수로 반환받을 때 
- 만약 Math.random()을 이용해서 120~150 사이의 난수를 정수로 반환받을려면 이런 공식을 사용함. 
------------------------------------------ 
Math.floor(Math.random() * 31 + 120)
150-120 = 30 인데(범위가 30) floor는 결과값을 1 내리니깐 1추가해서 31을 곱해준다. 곱하고 floor하면 30인데 150이니깐 +120을 뒤에 해준다. 
       
4. - 특정 구간의 난수를 정수로 반환받는 공식
------------------------------------------
Math.floor(Math.random() * (최댓값-최솟값+1) + 최솟값)
(최댓값-최솟값+1) -> 범위
 


예제) 방문자로부터 가위 바위 보를 추측해서 맞추는 게임 

 //방문자로부터 가위, 바위, 보를 추측해서 맞추는 게임
      document.write("<h2>가위 바위 보</h2>");

      var game = prompt("가위, 바위, 보!");
      var gameNum;

      switch (game) {
        case "가위":
          gameNum = 1;
          break;
        case "바위":
          gameNum = 2;
          break;
        case "보":
          gameNum = 3;
          break;

        default:
          alert("잘못 작성하셨습니다");
          location.reload(); //새로고침
      }

      var com = Math.ceil(Math.random() * 3); //1~3까지의 랜덤한 숫자(난수) ceil을 쓰면 0이 아닌 1부터 시작하게 된다.

      if (gameNum == com) {
        document.write("컴퓨터: 내가 이김");
      } else {
        document.write("컴퓨터: 담엔 내가 이긴다 부들부들");
      }