Преобразование числа в строку

Чтобы преобразовать число в строку достаточно воспользоваться операцией конкатенации строк или выполнить подстановку значения:

let x = 10, y = 1.2;
console.log(x + ' ' + y);         // 10 1.2
console.log(`${x} ${y}`);         // 10 1.2

Можно также воспользоваться методом toString([<Основание>]):

let x = 15;
let str = x.toString();      // "15"
console.log(typeof str);     // string
x = 100;
console.log(x.toString(2));  // 1100100
x = 119;
console.log(x.toString(8));  // 167
x = 255;
console.log(x.toString(16)); // ff

А также методами toFixed(), toPrecision() и toExponential() из класса Number (см. разд. 5.2):

let x = 0.06789;
console.log(x.toFixed(2));        // 0.07
console.log(x.toPrecision(2));    // 0.068
console.log(x.toExponential(2));  // 6.79e-2

Метод toLocaleString([<Локаль>[, <Настройки>]]) возвращает строковое представление числа в зависимости от локали. В первом параметре можно задать название локали (показан результат при запуске в Web-браузере):

let x = 1027324.564;
console.log(x.toLocaleString('ru-RU')); // 1 027 324,564
console.log(x.toLocaleString('en-US')); // 1,027,324.564
console.log(x.toLocaleString('de-DE')); // 1.027.324,564

В Node.js версии 12 локализация не входит в состав устанавливаемых компонентов, поэтому во всех трех инструкциях получим представление числа в локали en-US:

let x = 1027324.564;
console.log(x.toLocaleString('ru-RU')); // 1,027,324.564
console.log(x.toLocaleString('en-US')); // 1,027,324.564
console.log(x.toLocaleString('de-DE')); // 1,027,324.564

Во втором параметре указывается объект с дополнительными настройками:

  • style — стиль форматирования: decimal (просто число; значение по умолчанию), currency (валюта) или percent (проценты);
  • currency — задает код валюты для стиля currency;
  • currencyDisplay — задает способ отображения валюты для стиля currency: symbol (символ валюты; значение по умолчанию), code (код валюты, например, RUB) или name (название валюты, например, евро) (показан результат при запуске в Web-браузере):
let x = 1027324.5647;
console.log( x.toLocaleString('ru-RU',
           { style: 'currency', currency: 'RUB',
             currencyDisplay: 'code'})); // 1 027 324,56 RUB

Результат в Node.js версии 12:

RUB 1,027,324.56
  • minimumIntegerDigits — минимальное количество цифр в целой части числа (значение по умолчанию: 1);
  • minimumFractionDigits — минимальное количество цифр в дробной части числа (значение по умолчанию: 0);
  • maximumFractionDigits — максимальное количество цифр в дробной части числа (показан результат при запуске в Web-браузере):
let x = 1027324.5647;
console.log( x.toLocaleString('ru-RU',
           { style: 'decimal', minimumIntegerDigits: 1,
             minimumFractionDigits: 0,
             maximumFractionDigits: 2 }) ); // 1 027 324,56

Результат в Node.js версии 12:

1,027,324.56
  • useGrouping — определяет, нужно ли выводить разделители тысячных групп. Можно указать значения true (разделители выводятся; по умолчанию) или false (разделители не выводятся) (показан результат при запуске в Web-браузере):
let x = 1027324.5647;
console.log( x.toLocaleString('ru-RU',
           { style: 'decimal', useGrouping: false,
             maximumFractionDigits: 2 })); // 1027324,56

Результат в Node.js версии 12:

1027324.56

Вместо метода toLocaleString() можно воспользоваться классом Intl.NumberFormat:

<Экземпляр класса> = new Intl.NumberFormat([<Локаль>[, <Настройки>]]);

Применить настройки и получить отформатированную строку позволяет метод format(<Число>) (показан результат при запуске в Web-браузере):

let x = 1027324.5647;
let obj = new Intl.NumberFormat('ru-RU');
console.log(obj.format(x));                      // 1 027 324,565
obj = new Intl.NumberFormat('ru-RU', 
               { style: 'decimal', useGrouping: false,
                 maximumFractionDigits: 2 });
console.log(obj.format(x));                      // 1027324,56

Результат в Node.js версии 12:

1,027,324.565
1027324.56

Метод resolvedOptions() возвращает объект со всеми настройками (показан результат при запуске в Web-браузере):

let obj = new Intl.NumberFormat('ru-RU');
console.log(obj.resolvedOptions());
// Object { locale: "ru-RU", numberingSystem: "latn",
// style: "decimal", minimumIntegerDigits: 1, minimumFractionDigits: 0,
// maximumFractionDigits: 3, useGrouping: true, notation: "standard",
// signDisplay: "auto" }

Результат в Node.js версии 12:

{
  locale: 'ru-RU',
  numberingSystem: 'latn',
  style: 'decimal',
  minimumIntegerDigits: 1,
  minimumFractionDigits: 0,
  maximumFractionDigits: 3,
  useGrouping: true,
  notation: 'standard',
  signDisplay: 'auto'
}

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов