[JS] Math 객체 Top5 + Bonus (소수점 n자리까지 표기하기)

KAYA·2021년 11월 8일
0

JavaScript

목록 보기
2/4
post-thumbnail
post-custom-banner

Top5 선정은 철저히 본인 기준(=어디서 많이 본 기준)이다.

사실 쓰려고 할 때마다 헷갈려서 찾아보게 되길래 정리 좀 해야겠다 싶었다.


Math 객체

Math는 정적인 수학적 속성/메소드를 가진 내장 객체이며 Number 자료형만 지원한다.
아래 메소드는 Math의 정적 메소드이므로, 변형없이 아래 형태 그대로 사용해야 한다.

Math.round() : 반올림

console.log(Math.round(0.9));
// expected output: 1

console.log(Math.round(5.95), Math.round(5.5), Math.round(5.05));
// expected output: 6 6 5

console.log(Math.round(-5.05), Math.round(-5.5), Math.round(-5.95));
// expected output: -5 -5 -6

Math.ceil() : 올림

Math.ceil(.95);    // 1
Math.ceil(4);      // 4
Math.ceil(7.004);  // 8
Math.ceil(-0.95);  // -0
Math.ceil(-4);     // -4
Math.ceil(-7.004); // -7

Math.floor() : 내림

console.log(Math.floor(5.95));	//5
console.log(Math.floor(5.05));	//5
console.log(Math.floor(5));	//5

! 주의

console.log(Math.floor(-5.05));
// expected output: -6

 Math.floor(null)
// NaN 대신 0을 반환

Math.random() : 랜덤숫자

0 이상 1 미만의 부동소숫점 의사 난수.

랜덤으로 무언갈 도출할 때, 예를 들어 가위바위보/주사위 같은 랜덤 게임을 만들거나 랜덤으로 사진을 띄우는 등의 구현이 필요할 때 필요한 메소드

1. 0 이상 1 미만의 난수 생성하기

function getRandom() {
  return Math.random();
}

2. 두 값 사이의 난수 생성하기

  • min, max 두 값 사이의 난수를 생성한다.
  • 함수의 반환값 : min이상, max 미만
function getRandomNum(min, max) {
  console.log( Math.random() * (max - min) + min);
}
getRandomNum(1, 21); 	// 17.552907116645944

ㅎ.. 수학계산 이해하는 것도 일이네 ㅎ


Bonus : 소수점 n자리까지 표기하기

1. toFixed(n)

  • n : 소수점 뒤에 나타날 자릿수이며, Number만 입력 가능하다.
  • 0 이상 20 이하의 값을 사용할 수 있으며, 구현체에 따라 더 넓은 범위의 값을 지원할 수도 있다.
  • 값을 따로 지정하지 않고 비워두면 0으로 적용된다.
  • 문자열로 반환된다.
12.3456789.toFixed()	// '12'
12.3456789.toFixed(1)	// '12.3'
12.3456789.toFixed(2)	// '12.35' (5이상은 올림한다)
12.3456789.toFixed(9)	// '12.345678900' (모자라면 0으로 채운다)

-12.345.toFixed(1)	// -12.3 (연산자 적용이 우선이라 음수는 문자열로 반환 X)
(-12.345).toFixed(1)	// '-12.3' (음수에 괄호를 사용하면 문자열로 반환한다)

간편하고 직관적으로 사용할 수 있지만, 소수점 자리값의 한계나 문자열로 반환되어 연산 시 오류가 왕왕 발생하기도 한다.

2. Math.round() 사용하기

const num = 12.34567;
Math.round(num * 10) / 10		// 12.3
Math.round(num * 100) / 100;		// 12.35
Math.round(num * 10000) / 10000;	// 12.3457

소수에 10, 100, 100 ...번째 자릿수만큼 곱한 다음 다시 그 수로 나누어주면 toFixed()와 같은 역할을 한다.

3. 라이브러리

JavaScript의 수학 라이브러리를 용도에 따라 사용할 수 있다.
ex) Big.js, BigNumber.js, Decimal.js, mathjs...



참조

profile
겅부하자
post-custom-banner

0개의 댓글