공부 출처 : http://www.tcpschool.com/javascript/js_standard_math, 유노코딩 youtube
Math는 수와 관련된 속성과 메소드를 가진 내장 객체입니다.
대부분의 Math 메소드는 각 브라우저마다 다른 결과값을 얻을 수 있으므로, 정확한 값이 필요한 경우에는 Math를 사용하지 않는 것이 좋습니다.
생성자가 아니라 메소드, 속성으로 사용하므로 다음 문법으로 작성합니다.
Math.메소드()
Math.속성
Math 의 메소드 속성들은 다음과 같습니다.
이 이외에도 Math.min(), Math.max() 등 Math의 메소드는 무척 다양하니, 자주 쓰는 것들을 위주로 하나씩 확인해볼게요.
Math.min()
Math.min() 메소드는 인수로 전달받은 값 중에서 가장 작은 수를 반환합니다.
인수가 전달되지 않으면 Infinity를 반환하며, 인수 중에 비교할 수 없는 값이 포함되어 있으면 NaN을 반환합니다.
Math.min(); // Infinity
Math.min(1, 10, -100, -10, 1000, 0); // -100
Math.min(1, 10, -100, -10, "-1000", 0); // -1000
Math.min(1, 10, -100, -10, "문자열", 0); // NaN
Math.max()
Math.max() 메소드는 인수로 전달받은 값 중에서 가장 큰 수를 반환합니다.
인수가 전달되지 않으면 -Infinity를 반환하며, 인수 중에 비교할 수 없는 값이 포함되어 있으면 NaN을 반환합니다.
Math.max(); // -Infinity
Math.max(1, 10, -100, -10, 100, 0); // 100
Math.max(1, 10, -100, -10, "1000", 0); // 1000
Math.max(1, 10, -100, -10, "문자열", 0); // NaN
Math.random()
Math.random() 메소드는 0보다 크거나 같고 1보다 작은 무작위 숫자(random number)를 반환합니다.
console.log(Math.random()) // 0부터 1사이의 실수가 랜덤하게 반환이 된다.
Math.round()
Math.round() 메소드는 인수로 전달받은 값을 소수점 첫 번째 자리에서 반올림하여 그 값을 반환합니다.
Math.round(10.49); // 10
Math.round(10.5); // 11
Math.round(-10.5); // -10
Math.round(-10.51); // -11
Math.floor()
Math.floor() 메소드는 인수로 전달받은 값과 같거나 작은 수 중에서 가장 큰 정수를 반환합니다.
Math.floor(10.95); // 10
Math.floor(11.01); // 11
Math.floor(-10.95); // -11
Math.floor(-11.01); // -12
Math.ceil()
Math.ceil() 메소드는 인수로 전달받은 값과 같거나 큰 수 중에서 가장 작은 정수를 반환합니다.
Math.ceil(10.95); // 11
Math.ceil(11.01); // 12
Math.ceil(11); // 11
Math.ceil(-10.95); // -10
Math.ceil(-11.01); // -11
Math.sin()
Math.sin() 메소드는 인수로 전달받은 값의 사인(sine) 함수값을 반환합니다.
Math.sin(0); // 0
Math.sin(Math.PI / 2); // 1
위 Math() 메소드를 이용해서 로또 랜덤숫자를 만들어볼게요.
우선 for문으로 45까지 이어지는 숫자들을 랜덤으로 출력할 수 있게 만들어보겠습니다.
// floor 는 소수점 이하를 걷어내는 기능
//비어 있는 배열을 만들어서 랜덤 숫자를 넣어준다.
let lotto = []
for(let i = 0 ; i < 6; i +=1 ){
let rn = Math.floor(Math.random()*45)+1
lotto.push(rn)
}
console.log(lotto)
실행 콘솔 화면은 다음과 같습니다.
하지만 이렇게 for문으로 작성하면 중복되는 랜덤숫자가 발생합니다.
즉 반복횟수에 따라 반복을 하는 for문을 작성하면 안되고,
while 문으로 조건에 따라 수행을 할 수 있도록 작성을 해야합니다.
let lotto = []
while(lotto.length <6){ // 로또 배열의 길이가 6보다 작으면 계속 진행한다.
let rn = Math.floor(Math.random()*45)+1
if(lotto.indexOf(rn) == - 1){ // -1 은 없다는 뜻이다. 만약에, 배열 안에 rn 값이 없으면 그 때에만 리스트에 추가합니다.
lotto.push(rn)
}
}
console.log(lotto)
실행 콘솔 화면은 다음과 같습니다.
이 다음에는 위 기능을 참고해서 다음에는 CSS와 HTML, JS 를 이용해서 로또 추첨기를 만드는 미니 프로젝트를 해보고,
이어서 객체 리터럴에 대해 공부하겠습니다.
'자바스크립트 JS > JS 입문 공부일지' 카테고리의 다른 글
자바 스크립트(js) 입문 공부 16. JSON 제이슨, localStorage로컬스토리지 (1) | 2022.11.22 |
---|---|
자바 스크립트(js) 입문 공부 15. 객체 리터럴 , 스프레드 연산자 (0) | 2022.11.22 |
자바 스크립트(js) 입문 공부 13. 배열 메소드 (1) (0) | 2022.11.22 |
자바 스크립트(js) 입문 공부 12. Element.classList (0) | 2022.11.22 |
자바 스크립트(js) 입문 공부 11. 타이머 기능, 자바스크립트로 디지털 시계 만들기 (0) | 2022.11.21 |