숫자는 필요할 때 문자열로 자동으로 변환된다. 문자열을 이어붙이는 표현식에서 숫자가 사용될 경우 숫자는 먼저 문자열로 변환된다.

var n = 100;
var s = n + " bottles of beer on the wall.";


이러한 이어붙이기를 통한 변환 기능은 여러분이 종종 보게 될 관용적으로 사용되는 코드를 만들어 냈다. 숫자를 문자열로 변환하려면 간단시 숫자에 빈 문자열을 더하면 된다.

var n_as_string = n + "";


명시적으로 숫자를 문자열로 변환하려면 String() 함수를 사용한다.

var string_value = String(number);


숫자를 문자열로 변환하는 다른 기법으로 toString() 메서드를 사용하는 방법이 있다.

string_value = number.toString();


Number 객체의 toString() 메서드는 (기본 데이터 타입인 숫자는 이 메서드가 호출될 수 있도록 자동으로 Number 객체로 변환된다) 변환에 사용할 기수[각주:1]를 지정하는, 생략 가능한 전달인자를 받는다. 전달인자를 지정하지 않으면 10을 기수로 한 변환이 수행된다. 그러나 다른 기수(2와 36 사이에 있는)를 사용하여 숫자를 변환 할 수도 있다.[각주:2] 예를 들어, 다음은 toString() 메서드의 사용 예를 몇 가지 보여 준다.

var n = 17;
binary_string = n.toString(2);                    // "10001"로 평가된다.
octal_string = "0" + n.toString(8);               // "021"로 평가된다.
hex_string = "0x" + n.toString(16);             // "0x11"로 평가된다.


자바스크립트 1.5 이전 버전에서는 숫자를 문자열로 변환할 때, 문자열에 포함 될 소수점 자리 수나 지수 표기법 사용 여부 등을 지정할 수 있는 방법이 없었다. 때문에 화폐 형식과 같이 전통적으로 많이 사용해 오던 형식으로 숫자를 출력하는 데 어려움이 있었다.
ECMAScript v3과 자바스크립트 1.5는 Number 클래스에 세 가지 새로운 숫자/문자 변환 메서드를 추가하여 이 문제를 해결하였다. toFixed()는 숫자를 문자열로 변환하면서 소수점 이하를 지정된 개수만큼만 출력한다. 이 메서드는 지수표기법을 사용하지는 않는다. toExponential()은 소수점 앞의 숫자 하나와 지정된 개수의 소수점 이후 숫자로 구성되는 지수 표기법을 사용하여 숫자를 문자열로 변환한다. toPrecision()은 지정된 수의 유효 숫자 개수만큼 숫자를 출력한다. 만약 유효 숫자 개수가 숫자의 정수 부분 전체를 출력하기에 충분히 크지 않을 경우에는 지주 표기법이 사용된다. 이 세가지 메서드 모두 결과 문자열 내에서 나머지 숫자들을 적절히 반올림한다는 것을 유의하라. 다음 예들을 살펴보자.

var n = 123456.789;
n.toFixed(0);                    // "123456"
n.toFixed(2);                    // "123456.79"
n.toExponential(1);           // "1.2e+5"
n.toExponential(3);           // "1.235e+5"
n.toPrecision(4);              // "1.235e+5"
n.toPrecision(7);              // "123456.8"
  1. (역자 주) 기수는 특정 기수법(記數法)에서 수치를 표기하는 데 사용되는 숫자의 수를 의미한다. 예를 들면, 2진법에서는 2, 10진법에서는 10, 8진법에서는 8, 그리고 16진법에서는 16이 기수다. 더 자세한 사항은 다음의 위키백과를 참조하라. http://ko.wikipedia.org/wiki/기수법 [본문으로]

  2. ECMAScript 명세는 기수 전달인자를 받는 toString() 메서드를 지원하지만, 10 이외의 기수가 사용될 경우 구현 나름대로의 문자열을 반환할 수 있게 허용한다. 그러므로 표준을 준수하는 구현이라고 하더라도 간단히 기수 전달인자를 무시하고 항상 10을 기수로 하는 결과를 반환할 수 있다. 그렇지만 실제로는 대부분의 구현들이 주어진 기수에 맞게 변환을 수행한다. [본문으로]