우리가 실생활에서 쓰는 숫자는 10진수이다. 그러나 개발이나 색상표현을 하기위해 2진수나 16진수를 써야할 경우도 있다.
let num = 10
num.toString(2)
> 1010
()안에 숫자를 쓰면 그 숫자에 해당하는 진법으로 바뀐다.
let num2 = 255
num2.toString(16)
> ff
소수점 자리를 올려준다
let num1 = 5.1
let num2 = 5.7
Math.ceil(num1)
> 6
Math.ceil(num2)
> 6
let num1 = 5.1
let num2 = 5.7
Math.floor(num1)
> 5
Math.floor(num2)
> 5
let num1 = 5.1
let num2 = 5.7
Math.round(num1)
> 5
Math.round(num2)
> 6
만약 소수점 둘째자리 까지 표현하려면 어떻게 해야할까?(셋째 자리에서 반올림)
let userRate = 30.1234
Math.round(userRate * 100)/100
> 30.12
먼저 userRate에 100을 곱한뒤 Math.round()를 사용해서 반올림을 해준뒤 100을 나눠주면 된다
혹은 더 쉬운 방법이 있다
숫자를 인수로 받아 그 숫자만큼 소수점 아래를 반올림해준다
let userRate = 30.1234
userRate.toFixed(2)
> "30.12"
toFixed()의 숫자가 0이거나 소수점 자리 수보다 높은 경우엔 어떻게 될까?
숫자 인수가 0이면 정수부분만 나타내고 소수점 자리수보다 높으면 나머지부분을 0으로 채워준다.
let userRate = 30.1234
userRate.toFixed(0)
> "30"
userRate.toFixed(6)
> "30.123400"
여기서 주의할 점은 toFixed는 숫자열이 아니라 문자열로 반환한다는 점이다.
숫자인지 아닌지를 판별할때 쓰인다. 숫자가 맞다면 false를 반환 숫자가 아니라면 true를 반환한다.
헷갈릴 수 있는 부분이니 유의해서 사용하자!
let a = Number('a')
isNaN(a)
> true
isNaN(3)
> false
parseInt()
인수로 받은 값을 문자열에서 숫자열로 바꿔주며 '정수'를 반환한다. Number()와 다른 점은 문자가 혼용되어있어도 동작을 한다.
let margin = '10px'
parseInt(margin)
> 10
Number(margin)
> NaN
다만 앞에서부터 숫자를 읽다가 문자열을 만나면 코드를 끝까지 읽지않고 동작을 멈춘다.
let redColor = 'f3'
parseInt(redColor)
> NaN
이처럼 문자열을 먼저 만나 동작을 멈춰서 숫자열은 읽지도 못한채 NaN을 반환하는 것이다.
parseFloat()
정수만 반환하는 parseInt()와 다르게 '소수점'까지 반환한다.
let padding = '18.5%'
parseInt(padding)
> 18
parseFloat(padding)
> 18.5
0~1 사이에 무작위 숫자 생성한다.
Math.random()
> 0.45234336
Math.random()
> 0.872634872
Math.random()
> 0.786287432
만약 1~100사이에 임의의 숫자를 뽑고싶다면?
Math.floor(Math.random() * 100) + 1
Math함수의 랜덤숫자를 뽑은 뒤(0.8353) 100을 곱하고(83.53) Math.floor로 내림을 해준뒤(83) 1을 더해준다(84). 여기서 1을 더해주는 이유는 랜덤숫자가 소수점 2번째 자리까지 0이 나올 수 있기 때문이다(0.00324).
Math.max()
인수 중 가장 큰 수를 반환한다
Math.max(5, 32, 3, 7, -1, 6.74)
> 32
배열안에서 최댓값 찾기
const arr = [1, 2, 3, 4];
const max = Math.max.apply(null, arr);
> 4
Math.max(...arr)
> 4
Math.min()
인수 중 가장 작은 수를 반환한다.
Math.min(5, 32, 3, 7, -1, 6.74)
> -1
배열안에서 최소값 찾기
const arr = [1, 2, 3, 4];
const min = Math.min.apply(null, arr);
> 1
Math.min(...arr)
> 1
수직선 위에서 원점으로부터 어떤 수를 나타내는 점까지의 거리다. 절대값은 음이 아닌 실수로 표현한다.
Math.abs(-1)
> 1
n의 m승값을 구할 수 있다
Math.pow(2, 10)
> 1024
Math.sqrt(16)
> 4
인수로 전달된 값이 정수라면 true, 정수가 아니거나 문자열(혹은 그 외)일 경우 false를 반환함