숫자를 입력하는 다양한 방법
숫자 옆에 'e'를 붙이고 0의 개수를 그 옆에 붙여주면 숫자를 줄일 수 있습니다.
let billion = 1e9; // 10억, 1과 9개의 0
alert( 7.3e9 ); // 73억 (7,300,000,000)
1e3 = 1 * 1000
1.23e6 = 1.23 * 1000000
let ms = 0.000001;
let ms = 1e-6; // 1에서 왼쪽으로 6번 소수점 이동
let a = 0b11111111; // 255의 2진수
let b = 0o377; // 255의 8진수
let c = 0xff
alert( a == b ); // true, 진법은 다르지만, a와 b는 같은 수임
toString(base)
num.toString(base) 메서드는 base진법으로 num을 표현한 후, 이를 문자형으로 변환해 반환합니다.
let num = 255;
alert( num.toString(16) ); // ff
alert( num.toString(2) ); // 11111111
base는 2에서 36까지 쓸 수 있는데, 기본값은 10입니다.
++123456..toString(36)에 있는 점 두 개는 오타가 아닙니다. 위 예시처럼 숫자를 대상으로 메서드 toString을 직접 호출하고 싶다면 숫자 다음에 점 두 개 ..를 붙여야 합니다.
123456.toString(36)처럼 점을 한 개만 사용하면, 첫 번째 점 이후는 소수부로 인식되어 에러가 발생할 수 있습니다. 점을 하나 더 추가하면 자바스크립트는 소수부가 없다고 판단하고 함수를 호출합니다.
(123456).toString(36)도 가능합니다.
isNaN과 isFinite
Infinity와 -Infinity – 그 어떤 숫자보다 큰 혹은 작은 특수 숫자 값
NaN – 에러를 나타내는 값
alert( isNaN(NaN) ); // true
alert( isNaN("str") ); // true
alert( NaN === NaN ); // false 신기한 예제
isFinite(value) – 인수를 숫자로 변환하고 변환한 숫자가 NaN/Infinity/-Infinity가 아닌 일반 숫자인 경우 true를 반환함
alert( isFinite("15") ); // true
alert( isFinite("str") ); // false, NaN이기 때문입니다.
alert( isFinite(Infinity) ); // false, Infinity이기 때문입니다.
isFinite는 문자열이 일반 숫자인지 검증하는 데 사용
let num = +prompt("숫자를 입력하세요.", '');
// 숫자가 아닌 값을 입력하거나 Infinity, -Infinity를 입력하면 false가 출력됩니다.
alert( isFinite(num) );
parseInt와 parseFloat
불가능할 때까지 문자열에서 숫자를 읽음
alert( parseInt('100px') ); // 100
alert( parseFloat('12.5em') ); // 12.5
alert( parseInt('12.3') ); // 12, 정수 부분만 반환됩니다.
alert( parseFloat('12.3.4') ); // 12.3, 두 번째 점에서 숫자 읽기를 멈춥니다
읽을수 있는 숫자가 없을 시 'NaN' 반환
Math.floor 소수점 첫째 자리에서 내림(버림)
Math.ceil 소수점 첫째 자리에서 올림.
Math.trunc 소수부를 무시.
Math.round 소수점 첫째 자리에서 반올림
num.toFixed(precision) 소수점 n 번째 수까지의 어림수를 구한 후 이를 문자형으로 반환
Object.is
Object.is는 ===처럼 값을 비교할 때 사용되는 특별한 내장 메서드인데, 아래와 같은 두 가지 에지 케이스에선 ===보다 좀 더 신뢰할만한 결과를 보여줍니다.
이 두 에지 케이스를 제외하곤, Object.is(a, b)와 a === b의 결과는 같습니다.