[JavaScript] Number와 Math
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