숫자를 입력하는 다양한 방법
숫자 옆에 '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는 ===처럼 값을 비교할 때 사용되는 특별한 내장 메서드인데, 아래와 같은 두 가지 에지 케이스에선 ===보다 좀 더 신뢰할만한 결과를 보여줍니다.

  1. NaN을 대상으로 비교할 때: Object.is(NaN, NaN) === true임.
  2. 0과 -0이 다르게 취급되어야 할 때: Object.is(0, -0) === false임. 숫자를 나타내는 비트가 모두 0이더라도 부호를 나타내는 비트는 다르므로 0과 -0은 사실 다른 값이긴 합니다.

이 두 에지 케이스를 제외하곤, Object.is(a, b)와 a === b의 결과는 같습니다.

profile
개발!

0개의 댓글