Преобразование чисел в строки производится автоматически, по мере необходи_ мости. Например, если число используется в операции конкатенации строк, оно будет преобразовано в строку:
var n = 100;
var s = n + " бутылок пива на стене.";
Такая способность JavaScript к автоматическому преобразованию числа в стро_ ку реализует идиому программирования, которую часто можно встретить на практике: чтобы преобразовать число в строку, достаточно просто сложить его с пустой строкой:
var n_as_string = n + "";
Для явного преобразования числа в строку используется функция String():
var string_value = String(number);
3.2. Строки
Еще один способ преобразования числа в строку заключается в вызове метода toString():
string_value = number.toString( );
Метод toString() объекта Number (примитивы чисел автоматически преобразуют_ ся в объекты типа Number, благодаря чему можно воспользоваться этим методом) может принимать один необязательный аргумент, который определяет базу, или основание, системы счисления для преобразования. Если основание систе_ мы счисления не указывается, по умолчанию она предполагается равной 10. Од_ нако существует возможность выполнять преобразования и в других системах счисления (от 2 до 36)1, например:
Одним из недостатков реализаций JavaScript, существовавших до версии Java_ Script 1.5, было отсутствие встроенной возможности определить число десятич_ ных знаков, которые должны получиться в результате, или задать результат в экспоненциальном представлении. В связи с этим могут возникать определен_ ные сложности с представлением чисел в традиционных форматах, таких как денежные суммы.
В стандарте ECMAScript v3 и JavaScript 1.5 эта проблема была решена за счет до_ бавления нового метода преобразования числа в строку в классе Number. Метод to_ Fixed() преобразует число в строку и отображает определенное число знаков по_ сле десятичной точки. Однако данный метод не выполняет преобразование числа в экспоненциальную форму. Эту задачу решает метод toExponential(), который преобразует число в экспоненциальное представление с одним знаком перед точ_ кой и с заданным числом десятичных знаков после точки. Для отображения опре_ деленного числа значащих разрядов числа используется метод toPrecision(). Он возвращает строку с экспоненциальным представлением числа, если заданного количества значащих разрядов недостаточно для точного отображения целой части числа. Обратите внимание: все три метода корректно выполняют округле_ ние результата. Ниже приводятся примеры обращения к этим методам:
1 Спецификациями ECMAScript предусматривается возможность определения ос_ нования системы счисления в методе toString(), но при этом допускается возвра_ щать из метода строку в представлении, зависящем от конкретной реализации, если основание не равно 10. Таким образом, согласно стандарту метод может про_ сто игнорировать значение аргумента и всегда возвращать число в десятичном представлении. Однако на практике большинство реализаций возвращают кор_ ректный результат с учетом заданного основания системы счисления.