Spec-Zone.ru › JavaScript

Number.prototype.toString()

Базовая поддержка Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Метод toString() объекта Number возвращает строковое представление этого числового значения.

Попробуйте

function hexColor(c) {
  if (c < 256) {
    return Math.abs(c).toString(16);
  }
  return 0;
}

console.log(hexColor(233));
// Expected output: "e9"

console.log(hexColor("11"));
// Expected output: "b"

Синтаксис

toString()
toString(radix)

Параметры

radix Необязательный
Целое число в диапазоне от 2 до 36, определяющее основание системы счисления для представления числового значения. По умолчанию 10.

Возвращаемое значение

Строка, представляющая указанное числовое значение. Экспоненциальная запись используется, если основание равно 10, а абсолютное значение числа (без учета знака) больше или равно 1021 или меньше 10-6.

Исключения

RangeError
Выбрасывается, если radix меньше 2 или больше 36.
TypeError
Выбрасывается, если этот метод вызывается для объекта, который не является Number.

Описание

Объект Number переопределяет метод toString объекта Object; он не наследует Object.prototype.toString(). Для значений Number метод toString возвращает строковое представление значения в указанной системе счисления.

Для оснований счисления больше 10 буквы алфавита используются для обозначения цифр, больших 9. Например, для шестнадцатеричных чисел (основание 16) используются a - f.

Если указанное число отрицательное, знак сохраняется. Это справедливо даже для основания 2; возвращаемая строка является положительным двоичным представлением числа, которому предшествует знак -, а не дополнительный код числа.

Оба 0 и -0 имеют "0" в качестве своего строкового представления. Infinity возвращает "Infinity", а NaN возвращает "NaN".

Если число не является целым, используется десятичная точка . для разделения десятичных разрядов. Экспоненциальная запись используется, если основание равно 10, а абсолютное значение числа (без учета знака) больше или равно 1021 или меньше 10-6. В этом случае возвращаемая строка всегда явно указывает знак экспоненты.

console.log((10 ** 21.5).toString()); // "3.1622776601683794e+21"
console.log((10 ** 21.5).toString(8)); // "526665530627250154000000"

Базовым представлением для чисел с плавающей запятой является двоичная экспоненциальная запись (см. кодирование чисел). Однако метод toString() не использует напрямую это наиболее точное представление числового значения. Вместо этого алгоритм использует наименьшее количество значащих цифр, необходимых для различения выходного значения от соседних числовых значений. Например, если число велико, будет много эквивалентных строковых представлений одного и того же числа с плавающей запятой, и toString() выберет то, с наибольшим количеством нулей справа (для любого заданного основания).

console.log((1000000000000000128).toString()); // "1000000000000000100"
console.log(1000000000000000100 === 1000000000000000128); // true

С другой стороны, Number.prototype.toFixed() и Number.prototype.toPrecision() позволяют указать точность и могут быть более точными, чем toString().

Метод toString() требует, чтобы его значение this было примитивом Number или объектом-оберткой. Он выбрасывает TypeError для других значений this, не пытаясь привести их к числовым значениям.

Поскольку Number не имеет метода [Symbol.toPrimitive](), JavaScript автоматически вызывает метод toString(), когда объект Number используется в контексте, ожидающем строку, например, в шаблонном литерале. Однако примитивные значения Number не обращаются к методу toString() для приведения к строкам — вместо этого они напрямую преобразуются с использованием того же алгоритма, что и исходная реализация toString().

Number.prototype.toString = () => "Overridden";
console.log(`${1}`); // "1"
console.log(`${new Number(1)}`); // "Overridden"

Примеры

Использование toString()

const count = 10;
console.log(count.toString()); // "10"

console.log((17).toString()); // "17"
console.log((17.2).toString()); // "17.2"

const x = 6;
console.log(x.toString(2)); // "110"
console.log((254).toString(16)); // "fe"
console.log((-10).toString(2)); // "-1010"
console.log((-0xff).toString(2)); // "-11111111"

Преобразование основания числовых строк

Если у вас есть строка, представляющая число в системе счисления, отличной от десятичной, вы можете использовать parseInt() и toString() для преобразования ее в другую систему счисления.

const hex = "CAFEBABE";
const bin = parseInt(hex, 16).toString(2); // "11001010111111101011101010111110"

Будьте осторожны с потерей точности: если исходная числовая строка слишком велика (например, больше Number.MAX_SAFE_INTEGER), вам следует использовать BigInt. Однако конструктор BigInt поддерживает только строки, представляющие числовые литералы (т.е. строки, начинающиеся с 0b, 0o, 0x). В случае, если ваше исходное основание не является двоичным, восьмеричным, десятичным или шестнадцатеричным, вам может потребоваться написать собственный конвертер оснований или использовать библиотеку.

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-number.prototype.tostring

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
toString
1
12
1
4
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

См. также

  • Number.prototype.toFixed()
  • Number.prototype.toExponential()
  • Number.prototype.toPrecision()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API