본문 바로가기
프로그래밍/Javascript

JavaScript 기초 : 자료형 업그레이드 2. Math 객체

by 조크리 2020. 9. 14.
반응형

 

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. 문자열

 

 

반응형