JavaScript 입문 | 표준 객체 | Number 메소드

Number 메소드

Number 메소드는 Number 객체에 정의되어 있는 숫자와 관련된 작업을 할 때 사용하는 메소드이다.
가장 많이 사용되는 대표적인 Number 메소드는 다음과 같다.

  1. Number.parseFloat()
  2. Number.parseInt()
  3. Number.isNaN()
  4. Number.isFinite()
  5. Number.isInteger()
  6. Number.isSafeInteger()

Number.parseFloat() 메소드

Number.parseFloat() 메소드는 문자열을 파싱(parsing)하여, 문자열에 포함된 숫자 부분을 실수 형태로 반환한다.문자열에 여러 개의 숫자가 존재하면, 그중에서 첫 번째 숫자만을 실수 형태로 반환한다.

이 메소드는 전역 함수인 parseFloat() 함수와 완전히 같은 동작을 수행한다.

Number.parseFloat("12");         // 12
Number.parseFloat("12.34");      // 12.34
Number.parseFloat("12문자열");   // 12
Number.parseFloat("12 34 56");   // 12
Number.parseFloat("문자열 56")); // NaN

이 메소드는 사파리와 익스플로러에서 지원하지 않는다.

Number.parseInt() 메소드

Number.parseInt() 메소드는 문자열을 파싱하여, 문자열에 포함된 숫자 부분을 정수 형태로 반환한다.
문자열에 여러 개의 숫자가 존재하면, 그중에서 첫 번째 숫자만을 정수 형태로 반환한다.

이 메소드는 전역 함수인 parseInt() 함수와 완전히 같은 동작을 수행한다.

Number.parseInt("12");         // 12
Number.parseInt("12.34");      // 12
Number.parseInt("12문자열");   // 12
Number.parseInt("12 34 56");   // 12
Number.parseInt("문자열 56")); // NaN

이 메소드는 사파리와 익스플로러에서 지원하지 않는다.

Number.isNaN() 메소드

Number.isNaN() 메소드는 전달된 값이 NaN인지 아닌지를 검사한다.

이 메소드는 전역 함수인 isNaN() 함수가 가지고 있던 숫자로의 강제 변환에 따라 발생하는 문제를 더는 겪지 않게 해준다.
이 메소드는 오직 숫자인 값에서만 동작하며, 그 값이 NaN인 경우에만 true를 반환한다.

Number.isNaN(NaN);       // true
Number.isNaN(0 / 0);     // true
// 다음은 전역 함수인 isNaN()에서 잘못된 결과를 반환하는 예제임.
isNaN("NaN");            // true
isNaN(undefined);        // true
isNaN("문자열");         // true
// Number.isNaN() 메소드에서 맞는 결과를 반환하고 있음.
Number.isNaN("NaN");     // false
Number.isNaN(undefined); // false
Number.isNaN("문자열");  // false

이 메소드는 익스플로러에서 지원하지 않는다.

Number.isFinite() 메소드

Number.isFinite() 메소드는 전달된 값이 유한한 수인지 아닌지를 검사한다.

이 메소드는 전역 함수인 isFinite() 함수처럼 전달된 값을 숫자로 강제 변환하지 않는다.
이 메소드는 오직 셀 수 있는 값에서만 동작하며, 그 값이 유한한 경우에만 true를 반환한다.

Number.isFinite(0);        // true
Number.isFinite(3e45);     // true
Number.isFinite(Infinity); // false
Number.isFinite(NaN);      // false
// 다음은 전역 함수인 isFinite()에서 잘못된 결과를 반환하는 예제임.
isFinite("0");             // true
isFinite(null);            // true
// Number.isFinite() 메소드에서는 맞는 결과를 반환하고 있음.
Number.isFinite("0");      // false
Number.isFinite(null);     // false

이 메소드는 익스플로러에서 지원하지 않는다.

Number.isInteger() 메소드

Number.isInteger() 메소드는 전달된 값이 정수인지 아닌지를 검사한다.
전달된 값이 정수이면 true를 반환하며, 정수가 아니거나 NaN, Infinity와 같은 값은 모두 false를 반환한다.

Number.isInteger(0);        // true
Number.isInteger(-100);     // true
Number.isInteger(0.1);      // false
Number.isInteger("문자열"); // false
Number.isInteger(Infinity); // false
Number.isInteger(true);     // false

*이 메소드는 사파리와 익스플로러에서 지원하지 않습니다

Number.isSafeInteger() 메소드

Number.isSafeInteger() 메소드는 전달된 값이 안전한 정수(safe integer)인지 아닌지를 검사한다.

안전한 정수(safe integer)란 IEEE 754 국제 표준에서 정의한 64비트 부동 소수점 수로 정확히 표현되는 정수를 의미한다.
-(2^53 - 1)부터 (2^53 - 1)까지의 모든 정수가 안전한 정수에 포함된다.

Number.isSafeInteger(10);                  // true
Number.isSafeInteger(Math.pow(2, 53) - 1); // true
Number.isSafeInteger(Math.pow(2, 53));     // false
Number.isSafeInteger(Infinity);            // false
Number.isSafeInteger(NaN);                 // false
Number.isSafeInteger(3.14);                // false

Math.pow()는 거듭제곱 연산을 수행하는 Math 객체의 메소드이다.
예를 들어 Math.pow(2, 53)은 2^53을 반환한다.

이 메소드는 사파리와 익스플로러에서 지원하지 않는다.

자바스크립트 Number 메소드

메소드 설명
Number.parseFloat() 문자열을 파싱하여, 문자열에 포함된 숫자 부분을 실수 형태로 반환함.
Number.parseInt() 문자열을 파싱하여, 문자열에 포함된 숫자 부분을 정수 형태로 반환함.
Number.isNaN() 전달된 값이 NaN인지 아닌지를 검사함.
Number.isFinite() 전달된 값이 유한한 수인지 아닌지를 검사함.
Number.isInteger() 전달된 값이 정수인지 아닌지를 검사함.
Number.isSafeInteger() 전달된 값이 안전한 정수(safe integer)인지 아닌지를 검사함.

Number.prototype 메소드

모든 Number 인스턴스는 Number.prototype으로부터 메소드와 프로퍼티를 상속받는다.
가장 많이 사용되는 대표적인 Number.prototype 메소드는 다음과 같다.

메소드 설명
toExponential() Number 인스턴스를 지수 표기법으로 변환한 후, 그 값을 문자열로 반환함.
toFixed() Number 인스턴스의 소수 부분 자릿수를 전달받은 값으로 고정한 후, 그 값을 문자열로 반환함.
toPrecision() Number 인스턴스의 가수와 소수 부분의 합친 자릿수를 전달받은 값으로 고정한 후, 그 값을 문자열로 반환함.
toString() Number 인스턴스의 값을 문자열로 반환함.
valueOf() Number 인스턴스가 가지고 있는 값을 반환함.

toExponential() 메소드

이 메소드는 Number 인스턴스의 값을 지수 표기법으로 변환한 후, 그 값을 문자열로 반환한다.
이때 전달받은 값은 지수 표기법에서 소수 부분의 자릿수로 사용된다.

원형

numObj.toExponential([소수부분의자릿수])
var num = 12.3456;       // Number 인스턴스를 생성함.
num.toExponential();     // 1.23456e+1
num.toExponential(2);    // 1.23e+1
num.toExponential(4);    // 1.2346e+1
12.3456.toExponential(); // 1.23456e+1

toFixed() 메소드

이 메소드는 Number 인스턴스의 소수 부분 자릿수를 전달받은 값으로 고정한 후, 그 값을 문자열로 반환한다.

원형

numObj.toFixed([소수부분의자릿수])
var num = 3.14159265;  // Number 인스턴스를 생성함.
num.toFixed();         // 3
num.toFixed(2);        // 3.14
num.toFixed(4);        // 3.1416
3.14159265.toFixed(6); // 3.141593

toPrecision() 메소드

이 메소드는 Number 인스턴스의 가수와 소수 부분을 합친 자릿수를 전달받은 값으로 고정한 후, 그 값을 문자열로 반환한다.

원형

numObj.toPrecision([전체자릿수])
var num = 3.14159265;      // Number 인스턴스를 생성함.
num.toPrecision();         // 3.14159265
num.toPrecision(2);        // 3.1
num.toPrecision(4);        // 3.142
3.14159265.toPrecision(6); // 3.14159

toString() 메소드

이 메소드는 Number 인스턴스의 값을 문자열로 반환한다.
전달받은 값에 해당하는 진법으로 우선 값을 변환한 후, 그 값을 문자열로 반환한다.

원형

numObj.toString([진법])
var num = 255;       // Number 인스턴스를 생성함.
num.toString();      // 255
(255).toString();    // 255
(3.14).toString();   // 3.14
num.toString(2);     // 11111111
(100).toString(16);  // 64
(-0xff).toString(2); // -11111111

숫자 리터럴에 toString() 메소드를 사용할 때에는 반드시 괄호(())를 사용하여 숫자 리터럴을 감싸줘야 한다.
그렇지 않으면 자바스크립트는 SyntaxError를 발생한 후, 프로그램을 중지시킬 것이다.

valueOf() 메소드

이 메소드는 Number 인스턴스가 가지고 있는 값을 반환한다.

원형

numObj.valueOf()
var numObj = new Number(123); // 123의 값을 가지는 Number 인스턴스를 생성함.
typeof numObj;                // object
var num = numObj.valueOf();
num;                          // 123
typeof num;                   // number