0이 많이 붙은 큰 숫자
0의 개수를 'e'뒤에 추가한다. ex) 123e6은 0이 6개인 숫자, 123000000을 나타낸다.
'e'다음에 음수가 오면, 음수의 절대값만큼 10을 거듭제곡합 숫자로 주어진 숫자를 나눈다. ex 123e-6은 0.000123을 나타낸다.
다양한 진법 사용하기
16진수(0x), 8진수(0o), 2진수(0b)를 사용할 수 있게 지원한다. ex)0xff, 0o377, 0b11111111, -> 255
parseInt(str, base)를 사용하면 str을 base진수로 바꿔준다. (단, 2 <= base <= 36)
반대로 base진수로 된 str을 파싱할 수 있다.
num.toString(base)는 숫자를 base진수로 바꾸고, 이를 문자열 형태로 반환한다. (단, 2 <= base <= 36)
숫자를 대상으로 매서드 toString을 직접 호출할 때는 숫자 다음에 점 두개(..)를 붙여야 한다.
ex) 255..toString(16) -> ff점을 한 개만 사용하면, 첫 번째 점 이후는 소수부로 인식되어 에러가 발생한다. ex) 255.toString(16) -> ERROR()를 이용한다면 점 하나로도 사용가능하다. ex) (255).toString(16) -> ff
단위가 붙은 숫자 변환하기
parseInt/parseFloat를 사용하면 문자열에서 앞에 숫자만 읽고, 읽은 숫자를 에러가 발생하기 전에 반환해주는 '약한'형 변환을 사용할 수 있다.
ex) parseInt('100px') -> 100
parseFloat('12.3em') -> 12.5
partseInt('12.3em') -> 12
소수 처리하기
Math.floor(num)
소수점 첫째 자리에서 내림(버림). ex) Math.floor(3.2) -> 3, Math.floor(-1.2) -> -2
Math.ceil(num)
소수점 첫째 자리에서 올림. ex) Math.ceil(3.2) -> 4, Math.ceil(-1.2) -> -1
Math.round(num)
소수점 첫째 자리에서 반올림. ex) Math.round(3.2) -> 3, Math.round(3.7) -> 4, Math.round(-1.2) -> -1, Math.round(-1.7) -> -2
Math.trunc(num)
소수부를 무시. ex) Math.trunc(3.2) -> 3, Math.trunc(-1.2) -> -1
num.toFixed(precision)
precision 다음 자리수를 반올림하여 문자열을 반환한다.
소수를 다룰 땐 정밀도 손실에 주의해야 한다.
2진법 체계에서 작동하는 컴퓨터는 2의 거듭제곱으로 나눈 값은 잘 동작하지만 2의 거듭제곱이 아닌 값으로 나누게 되면 무한 소수가 되어버린다. 따라서 0.1 또는 0.2를 정확하게 저장하는 방법은 없다.
0.1.toFixed(20) -> 0.10000000000000000555
그리고 소수를 합하면 '정밀도 손실'도 더해진다. 이로 인해 0.1+0.2는 정확히 0.3이 아니게 된다.
특수 숫자값 검사하기
isNaN
인수를 숫자로 변환한 다음 NaN인지 테스트하여 NaN일 경우 true를 반환한다.
NaN은 NaN 자기 자신을 포함하여 그 어떤 값과도 같지 않기 때문에 NaN을 검증하는 데 사용한다.
isFinite
인수를 숫자로 변환하고 변환한 숫자가 NaN/Infinity/-Infinity가 아닌 일반 숫자인 경우 true를 반환함.
문자열이 일반 숫자인지 검증하는 데 사용된다.
단, 빈 문자열은 0으로 취급된다는 점에 유의해야 한다.
다양한 수학함수가 필요할 때는 Math 객체를 이용하면 된다. (단, Number 자료형만 지원하며, BigInt와는 사용할 수 없다.)
'JavaScript' 카테고리의 다른 글
JavaScript ) 래퍼 객체 (0) | 2022.03.01 |
---|---|
JavaScript 객체의 형변환 (0) | 2022.02.25 |
JavaScript 심볼형 (0) | 2022.02.14 |
JavaScript this와 체이닝 (0) | 2022.02.10 |
JavaScript 가비지 컬렉션 (0) | 2022.02.10 |
댓글