LHJ

I'm a FE developer.

3.19.1 숫자로 바꾸기

19 Apr 2020 » js_lj

문자열을 숫자로 바꾸기

문자열을 숫자로 바꿔야 할 경우가 많습니다.
사용자에게 받은 입력은 보통 문자열로, 자바스크립트에는 문자열을 숫자로 바꾸는 방법이 몇 가지 있습니다.
첫 번째는 Number 객체 생성자를 사용하는 방법입니다.
(보통 생성자를 사용할 때는 항상 new 키워드를 사용하며, new 키워드에 대해서는 9장에서 설명합니다. 여기서 사용하는 방법은 예외입니다.)

const numStr = "33.3";
const num = Number(numStr);     // 이 행은 숫자 값을 만듭니다.
                                // Number 객체의 인스턴스가 아닙니다.

숫자로 바꿀 수 없는 문자열에서는 NaN이 반환됩니다.

두 번째 방법은 내장 함수인 parseIntparseFloat 함수를 사용하는 방법입니다.
이들은 Number 생성자와 비슷하게 동작하지만 몇 가지 다른 점이 있습니다.
parseInt를 사용할 때는 기수(radix) 를 넘길 수 있습니다.
기수는 변환할 문자열이 몇 진수 표현인지 지정합니다.
예를 들어 16진수를 변환할 때는 기수로 16을 넘깁니다.
기수 기본값은 10이므로 10진수 표현을 변환할 때는 기수를 쓰지 않아도 결과는 같지만, 항상 기수를 명시하길 권합니다.
parseIntparseFloat는 모두 숫자로 판단할 수 있는 부분까지만 변환하고, 그 뒤에 있는 문자열은 무시합니다.
따라서 문자열의 형태가 엉망진창이어도 입력값으로 쓸 수 있습니다.
다음 예제를 보십시오.

const a = parseInt("16 volts", 10);     // " volts"는 무시됩니다. 10진수 16입니다.
const b = parseInt("3a", 16);           // 16진수 3a를 10진수로 바꿉니다. 결과는 58입니다.
const c = parseFloat("15.5 kph");       // " kph"는 무시됩니다. parseFloat는 항상 기수가 10이라고 가정합니다.

Date 객체를 숫자로 바꾸기

Date 객체숫자로 바꿀 때는 valueOf() 메서드를 사용합니다.
이 숫자는 UTC 1970년 1월 1일 자정으로부터 몇 밀리초가 지났는지 나타내는 숫자입니다.

const d = new Date();       // 현재 날짜
const ts = d.valueOf();     // UTC 1970년 1월 1일 자정으로부터
                            // 몇 밀리초가 지났는지 나타내는 숫자

불리언 값을 1 또는 0으로 바꾸기

불리언을 1 (true)이나 0(false)으로 바꿔야 할 때도 있습니다.
이렇게 변환할 때는 조건 연산자를 사용합니다.
조건 연산자는 5장에서 설명합니다.

const b = true;
const n = b ? 1:0;