JavaScript

[JavaScript] Number와 Math

김도유 2022. 9. 15. 16:24
let num = 10;

num.toString(); // "10" 숫자->문자
num.toString(2); //"1010" 10진수-> 2진수

 

Math

자바스크립트에는 수학과 관련된 프로퍼티와 메소드들을 가지고 있는 Math라는 내장객체가 있다.

 

Math.ceil(): 올림

Math.floor(): 내림

Math.round(): 반올림

let num1 = 5.1;
let num2 = 5.7;

Math.ceil(num1); //6
Math.ceil(num1); //6

Math.floor(num1); //5
Math.floor(num2); //5

Math.round(num1); //5
Math.round(num2); //6

 

소수점 자릿수

 

요구사항 : 소수점 둘째 자리까지 표현(셋째 자리에서 반올림)

1. Math.round()

2. toFixed()

let userRate = 30.1234;

userRate * 100  // 3012.34
Math.round(userRate * 100) // 3012
Math.round(userRate * 100) / 100   // 30.12

userRate.toFixed(2); // "30.12"
userRate.toFixed(0); // "30"
userRate.toFixed(6); // "30.123400"

주의! toFixed() 메소드는 문자열을 반환하므로 

반환받은 이후 숫자로 변환하여야 한다.

userRate.toFixed(2); // "30.12"
Number(userRate.toFixed(2)); // 30.12

 

isNaN() : 특정 값이 숫자가 아님을 체크하는 메소드

* NaN : Not-a-Number

 

사용 방법 : isNaN(값);

NaN일 경우 : true

아닐 경우 : false

let x = Number('x'); // NaN
x == NaN // false
x === NaN // false
NaN == NaN // false

x는 NaN이다. 

하지만 신기하게도 자기 자신과 똑같지 않다고 판단한다.

isNaN만이 NaN인지 아닌지 판단할 수 있다.

 

 

parseInt()

Number()와 다른점은 문자가 혼용되어 있어도 동작한다는 점이다.

let margin = '10px';

parseInt(margin); // 10
Number(margin); // NaN

Number()는 NaN을 반환하지만

parseInt()는 읽을 수 있는 부분까지 읽고, 문자를 만나면 숫자로 반환한다.

let redColor = 'f3';
parseInt(redColor); // NaN

그래서 parseInt() 숫자로 시작하지 않으면, NaN을 반환한다.

 

let redColor = 'f3';
parseInt(redColor); // NaN

parseInt(redColor, 16); // 243

그런데, parseInt()는 두번째 인수를 받아서 진수를 지정할 수 있다.

문자로 시작했지만 두번째 인수에 16을 전달하여 16진수로 반환하였다.

 

 

parseFloat()

parseInt()와 동일하게 동작하지만 parseFloat()는 부등호 소수점을 반환하고 parseInt()는 정수만 반환한다.

let padding = '18.5%';
parseInt(padding); // 18
parseFloat(padding); // 18.5

 

Math.random() : 0~1의 무작위 숫자 생성

1~100 사이 임의의 숫자를 뽑고 싶다면?

Math.floor(Math.random() * 100) + 1

 

Math.abs() : 절대값

Math.abs(-1); //1

Math.pow(n,m) : 제곱

Math.pow(2, 10); // 2의 10승 : 1024