본문 바로가기

Language/Javascript

[Javascript] 숫자, 수학 method(Number, Math)

728x90
반응형

toString()

10진수 -> 2진수/16진수

let num = 10;
num.toString();  // "10"
num.toString(2);  // "1010"
let num2 = 255;
num2.toString(16);  // "ff"

괄호 안에 숫자를 쓰면 그 숫자의 진법으로 변환한다.


Math

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

대표적인 프로퍼티의 예로 Math.PI;를 입력하면 원주율을 구해준다.

 

Math.ceil() : 올림

let num1 = 5.1;
let num2 = 5.7;

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

 

Math.floor() : 내림

let num1 = 5.1;
let num2 = 5.7;

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

 

Math.round() : 반올림

let num1 = 5.1;
let num2 = 5.7;

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

 

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

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

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

 

Math.abs() : 절대값

Math.abs(-1)  // 1

 

Math.pow(n, m) : 제곱

Math.pow(2, 10);  // 1024

 

Math.sqrt() : 제곱근

Math.sqrt(16);  // 4

 

Math.max() / Math.min()

Math.max(1, 4, -1, 5, 10, 9, 5.54);  // 10
Math.min(1, 4, -1, 5, 10, 9, 5.54);  // -1

소수점 자릿수

let userRate = 30.1234;

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

100을 곱하고 반올림을 한 뒤 100으로 나누면 소수점 둘째자리까지 표현된다.

또는 toFixed() 메소드를 사용한다.

Math.round(userRate*100)/100  // 30.12
userRate.toFixed(2);  // "30.12"

0일 때는 소수부 개수가 0이니 정수부만 남는다. 소수부 개수보다 큰 숫자를 넣으면 0으로 채워준다.

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

* 주의할 점

toFixed는 문자열을 반환한다. 반환받은 이후 Number을 통해 숫자로 변환 후 작업하는 경우가 많다.

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

isNaN()

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

x == NaN  // false
x === NaN  // false
NaN == NaN  // false

isNaN(x)  // true
isNaN(3)  // false

NaN은 신기하게도 자기 자신과도 똑같지 않다고 판단한다. x가 NaN인지 아닌지 판단하는 방법은 isNaN이 유일하다. 

parseInt()

읽을 수 있는 부분까지 읽고 문자를 만나면 숫자로 반환

let margin = '10px';
parseInt(margin)  // 10
Number(margin);  // NaN

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

두 번째 인자로 숫자를 받아서 진수를 지정할 수 있다.

let redColor = 'f3';
parseInt(redColor, 16);  // 243

parseInt('11', 2);  // 3

parseFloat()

let padding = '18.5%';
parseInt(padding);  // 18
parseFloat(padding);  // 18.5
728x90
반응형