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. Главное, что стоит запомнить: метод всегда возвращает строку и управляет количеством цифр после точки именно в коэффициенте, а не во всём числе.