Learn JavaScript

toExponential() - метод для форматирования числа в экспоненциальной записи в JavaScript

toExponential() переводит число в экспоненциальную запись.

Такой формат выглядит как коэффициент и степень десяти, например 1.23e+3.

Синтаксис

number.toExponential(fractionDigits)
  • number - число
  • fractionDigits - сколько цифр оставить после точки в коэффициенте

Что делает toExponential()

Метод записывает число в научной форме и возвращает результат строкой.

console.log((1234.567).toExponential());  // "1.234567e+3"
console.log((1234.567).toExponential(2)); // "1.23e+3"

Это удобно, когда нужно компактно показать очень большие или очень маленькие числа.

Что возвращает toExponential()

toExponential() возвращает не число, а строку.

const result = (1234.567).toExponential(2);

console.log(result);        // "1.23e+3"
console.log(typeof result); // "string"

Если потом нужно именно число, его получают отдельно:

const value = Number((1234.567).toExponential(2));

console.log(value);        // 1230
console.log(typeof value); // "number"

Как работает fractionDigits

Аргумент fractionDigits задаёт количество цифр после точки в коэффициенте.

console.log((1234.567).toExponential(0)); // "1e+3"
console.log((1234.567).toExponential(2)); // "1.23e+3"
console.log((12).toExponential(3));       // "1.200e+1"

То есть здесь считается не вся длина числа, а только дробная часть коэффициента.

Округление

toExponential() округляет число, если цифр больше, чем нужно.

console.log((1.23).toExponential(0)); // "1e+0"
console.log((9.99).toExponential(1)); // "1.0e+1"

Метод не просто обрезает цифры, а именно округляет результат.

Очень маленькие числа

Для маленьких чисел метод тоже полезен.

console.log((0.000123).toExponential(2)); // "1.23e-4"

Здесь e-4 означает умножение на 10 в степени -4.

Ноль

С нулём метод тоже работает предсказуемо.

console.log((0).toExponential(3)); // "0.000e+0"

Без аргумента

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

console.log((1234.567).toExponential()); // "1.234567e+3"

Число не меняется

toExponential() не изменяет исходное число. Он только возвращает новую строку.

const value = 1234.567;
const formatted = value.toExponential(2);

console.log(value);     // 1234.567
console.log(formatted); // "1.23e+3"

Допустимый диапазон fractionDigits

Аргумент fractionDigits должен быть в диапазоне от 0 до 100.

Если передать больше, будет RangeError.

(1.23).toExponential(101); // RangeError

toExponential() и toFixed()

Эти методы делают разное.

console.log((1234.567).toFixed(2));       // "1234.57"
console.log((1234.567).toExponential(2)); // "1.23e+3"
  • toFixed() оставляет нужное количество знаков после запятой в обычной записи
  • toExponential() переводит число в научную запись

toExponential() и toPrecision()

toPrecision() тоже может вернуть строку с e, но задача у него другая.

console.log((1234.567).toPrecision(3));   // "1.23e+3"
console.log((1234.567).toExponential(2)); // "1.23e+3"

Похожий результат здесь случаен:

  • toPrecision() работает через количество значащих цифр
  • toExponential() всегда строит именно экспоненциальную запись

Когда это полезно

toExponential() удобно использовать, когда:

  • нужно показать очень большое или очень маленькое число компактно
  • важна научная запись результата
  • число выводится в техническом интерфейсе, отчёте или отладке

Пример:

const mass = 0.000000123;

console.log(mass.toExponential(2)); // "1.23e-7"

Частые ошибки

Думать, что метод возвращает число

const result = (1234.567).toExponential(2);

console.log(typeof result); // "string"

Если дальше нужно число, его надо получить отдельно.

Путать fractionDigits и значащие цифры

console.log((1234.567).toExponential(2)); // "1.23e+3"

Здесь 2 означает две цифры после точки в коэффициенте, а не две цифры во всём числе.

Путать toExponential() и toFixed()

console.log((12.34).toFixed(2));       // "12.34"
console.log((12.34).toExponential(2)); // "1.23e+1"

Один метод форматирует обычную запись, другой переводит число в научную форму.

Быстрая памятка

  • toExponential() переводит число в экспоненциальную запись
  • метод возвращает строку, а не число
  • fractionDigits задаёт количество цифр после точки в коэффициенте
  • метод округляет результат
  • аргумент должен быть от 0 до 100
  • это не то же самое, что toFixed() или toPrecision()

Коротко

toExponential() - это удобный способ записать число в научной форме в JavaScript. Главное, что стоит запомнить: метод всегда возвращает строку и управляет количеством цифр после точки именно в коэффициенте, а не во всём числе.