2. Math 객체
지난 글에서 봤던 Date객체처럼
JavaScript 기초 : 객체 4. Date 객체(getTime()) - D-day계산기 만들기!
Math객체도 있다.
Math 객체는
Math.---
이렇게 써서 사용하면 된다.
Math 객체의 다양한 종류를 살펴보자.
2-1. 절대값(Absolute Number)
절대값은 무슨 수이든 '양수'로 바꿔주는 것이다.
Math.abs(-10);
이런식으로 적으면 양수가 된다.
//절댓값(abs)
console.log(Math.abs(-11));
console.log(Math.abs(11));
2-2.최댓값(Maximum)
Math.max(2,3,4,-1);
이렇게 파라미터에 여러 값을 넣어주면 그 중 가장 큰 값이 리턴된다.
//최댓값(max)
console.log(Math.max(2, -1, 4, 5, 0));
2-3.최솟값(Minimum)
Math.min(2,3,4,-1);
이렇게 파라미터에 여러 값을 넣어주면 그 중 가장 작은 값이 리턴된다.
//최솟값(min)
console.log(Math.min(3, -1, 2, 5, 0));
2-4. 거듭제곱(Exponentiation)
Math.pow(2,3);
이렇게 파라미터 x, y 를 넣으면 x의 y를 거듭제곱한 결과값이 리턴된다.
//거듭제곱(pow)
console.log(Math.pow(2, 3)); //8출력
console.log(Math.pow(5, 2)); //25출력
2-5. 반올림(round)
Math.round(2.3);
이렇게 쓰면 소수점 아래부분이 반올림되어 정수가 된다.
//반올림(round)
console.log(Math.round(2.2));
console.log(Math.round(2.4));
console.log(Math.round(2.49));
console.log(Math.round(2.5));
console.log(Math.round(2.7));
2-6. 올림(ceil)
Math.ceil(2.3);
이렇게 쓰면 소수점 아래부분이 올림되어 정수가 된다.
//올림(ceil)
console.log(Math.ceil(2.4));
console.log(Math.ceil(2.49));
console.log(Math.ceil(2.8));
2-7. 버림(floor)
Math.floor(2.3);
이렇게 쓰면 소수점 아래부분이 버림 되어 정수가 된다.
//버림(floor)
console.log(Math.floor(2.4));
console.log(Math.floor(2.49));
console.log(Math.floor(2.8));
2-8. 난수(random)
Math.random()
이렇게 쓰면 0이상 1미만 값이 랜덤으로 리턴된다.
즉 난수가 소수점으로 리턴된다.
//난수(random)
console.log(Math.random());
console.log(Math.random());
console.log(Math.random());
그렇다면
난수를 0부터 9까지의 정수로 변환시키려면?
먼저 intRandom이라는 변수를 만든 뒤 변수 값에 랜덤 값을 반환시킨다.
그리고 Math.floor()를 써주고
그 안에 변수 intRandom * 10을 써준다.
intRandom * 10을 하면 2.1234와 같이 소수가 나오는데
이것을 floor를 이용해서 소수 아래 값을 버려주는 것이다.
정수 랜덤 값을 구하는 것이니 딱히 반올림이나 올림은 필요없고
소수 아래 부분을 버려주면 된다.
//floor와 random 사용하기
let intRandom = Math.random();
console.log(Math.floor(intRandom * 10));
위의 코드처럼 사용하면 정수 랜덤값을
콘솔 창에 나타낼 수 있다.
2-9. 컴퓨터가 숫자를 다루는 방법때문에 생긴 오류
컴퓨터는 사람이 쓴 숫자를 인식할 때 결국 2진수로 받아들이게 된다.
따라서 사칙연산을 하더라도 2진수로 바꾼 뒤 사칙연산을 하는데
특히 소수의 경우 2진수로 바꾸었을 때 무한소수가 나오게 되는 경우가 있다.
이 경우 컴퓨터가 어느 정도 자리수에서 자동으로 반올림을 해주는데
이 미세한 차이가 컴퓨터가 계산을 실수한 것 처럼 보이게 한다.
따라서 사람이 배워온 방식의
계산 값이 출력되게 하려면
반올림 하여 정수로 만들어주는 Math객체의 round 메소드를 사용하거나
toFixed 메소드를 사용해서 소수 첫 째 짜리까지 반올림 해주어야 한다.
//sum을 출력하면 0.3이 안나오는 문제 해결 방법
let sum = 0.1 + 0.2
//round함수를 써서 반올림하고 다시 10으로 나눠주기
console.log(Math.round(sum * 10) / 10);
//toFixed써서 소수 첫째자리까지 반올림해주기
console.log(+sum.toFixed(1));
그럼 지금까지 살펴본 Math객체를 사용하여
은행 이자 계산기를 만들어보자.
2-10. 예시
이자율, 납입금액, 기간을 파라미터로 받아서 적금을 부었을 때 총 금액을 계산해주는 함수를 만들어보자!
2가지 방법이 있는데toFixed를 이용하는 방법과round메소드를 이용하는 방법이다.
//rate이자율, payment납입금액, term 기간 _ 이자+원금 계산하기
//foFixed이용하는 방법_+사용해서 숫자형으로 바꿔줄 것!
function interestCalculator(rate, payment, term) {
let interest = +(payment * term * (term + 1) / 2 * rate / 12).toFixed();
console.log(interest);
}
//round사용하는 방법
function interestCalculator(rate, payment, term) {
let interst = +Math.round((payment * term * (term+1) / 2 * rate / 12));
console.log(interest);
}
두 가지 경우 모두
동일한 결과를 출력한다.
tofixed의 경우 반올림하여 값을 나타내는 메소드인데 파라미터 값을 적지 않으면 정수가 출력된다.
round또한 반올림하여 정수를 만들어주는 메소드이기 때문에
Math.round() 를 적고 괄호 안에 나타낼 값을 적어주면 된다.
다음 글에서는 문자열에 대해 정리해보자!
JavaScript 기초 : 자료형 업그레이드 3. 문자열
'프로그래밍 > Javascript' 카테고리의 다른 글
JavaScript 기초 : 자료형 업그레이드 4. 기본형과 참조형 (0) | 2020.09.15 |
---|---|
JavaScript 기초 : 자료형 업그레이드 3. 문자열 - slice메소드 (0) | 2020.09.14 |
JavaScript 기초 : 배열 4. for ...of 반복문 (0) | 2020.09.10 |
JavaScript 기초 : 배열 3. 메서드 - indexOf, lasindexOf, includes, reverse 사용법 (0) | 2020.09.10 |
JavaScript 기초 : 배열 3. 배열 메소드 - shift, pop, unshift, push (0) | 2020.09.10 |