ToExponential: примеры (JAVASCRIPT)

Метод toExponential для форматирования чисел в JavaScript
Раздел: Числа, Форматирование
toExponential(fractionDigits?): string

Описание функции toExponential

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

Функция вызывается у экземпляра числа и принимает один необязательный аргумент.

Аргументы

  • fractionDigits (необязательный) - целое число в диапазоне от 0 до 100, определяющее количество цифр после десятичной точки. Если аргумент опущен, количество цифр после точки будет таким, чтобы точно представить число.

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

  • Строка, представляющая число в экспоненциальной нотации с одной цифрой до десятичной точки, округленное и отформатированное в соответствии с переданным аргументом.
  • Для значений, не являющихся числами (NaN), возвращается строка "NaN".
  • Для бесконечности (Infinity) возвращается строка "Infinity".

Базовые примеры использования

Пример с разным количеством знаков после запятой:

let num = 12345.6789;
console.log(num.toExponential());
console.log(num.toExponential(2));
console.log(num.toExponential(4));
console.log(num.toExponential(8));
1.23456789e+4
1.23e+4
1.2346e+4
1.23456789e+4

Пример с маленьким числом:

console.log((0.000123).toExponential(3));
1.230e-4

Пример с целым числом:

console.log((42).toExponential());
4.2e+1

Похожие функции в JavaScript

toFixed()

Форматирует число с фиксированной запятой, возвращает строку. Применяется, когда важна точность до определенного количества знаков после запятой, но не требуется экспоненциальная запись.

toPrecision()

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

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

Аналоги в других языках программирования

Python: format()

num = 12345.6789
print("{:.2e}".format(num))
print(format(num, ".4e"))
1.23e+04
1.2346e+04

PHP: number_format() или sprintf()

$num = 12345.6789;
echo number_format($num, 2, '.', ''); // Не экспонента
// Для экспоненты используем sprintf
echo sprintf("%.2e", $num);
12345.68
1.23e+4

C (стандартная библиотека): printf()

#include <stdio.h>
int main() {
    double num = 12345.6789;
    printf("%.2e\n", num);
    return 0;
}
1.23e+04

MySQL: FORMAT()

Функция FORMAT() не поддерживает экспоненциальную запись. Для преобразования можно использовать конкатенацию строк и функции округления, либо выполнять форматирование на стороне приложения.

Типичные ошибки

Передача нечислового значения

let notNum = "текст";
console.log(notNum.toExponential());
TypeError: notNum.toExponential is not a function

Аргумент вне допустимого диапазона

let num = 123.456;
console.log(num.toExponential(101)); // > 100
console.log(num.toExponential(-1));  // < 0
RangeError: toExponential() argument must be between 0 and 100
RangeError: toExponential() argument must be between 0 and 100

Использование с null и undefined

console.log(null.toExponential());
console.log(undefined.toExponential());
TypeError: Cannot read properties of null
TypeError: Cannot read properties of undefined

Изменения в последних версиях

Метод toExponential() был стандартизирован в ECMAScript 3 (1999 год) и с тех пор его основное поведение остается стабильным.

В ECMAScript 2015 (ES6) были уточнены некоторые аспекты округления, чтобы соответствовать стандарту IEEE 754-2008. Однако для большинства пользовательских сценариев эти изменения незаметны.

Современные реализации также гарантируют, что для чисел, имеющих точное представление в виде десятичной дроби с заданным количеством знаков после запятой, округление происходит предсказуемо.

Расширенные примеры

Обработка специальных числовых значений

Пример javascript
console.log(NaN.toExponential(2));
console.log(Infinity.toExponential());
console.log((-Infinity).toExponential(3));
NaN
Infinity
-Infinity

С отрицательными числами

Пример javascript
console.log((-123.456).toExponential(2));
-1.23e+2

Разное количество знаков после запятой для одного числа

Пример javascript
let num = 0.000000123456789;
for (let i = 0; i <= 10; i += 2) {
    console.log(`До ${i} знаков: ${num.toExponential(i)}`);
}
До 0 знаков: 1e-7
До 2 знаков: 1.23e-7
До 4 знаков: 1.2346e-7
До 6 знаков: 1.234568e-7
До 8 знаков: 1.23456789e-7
До 10 знаков: 1.2345678900e-7

Использование в научных расчетах

Пример javascript
// Постоянная Авогадро
const avogadro = 6.02214076e23;
console.log(avogadro.toExponential(4));

// Постоянная Планка
const planck = 6.62607015e-34;
console.log(planck.toExponential(8));
6.0221e+23
6.62607015e-34

Сравнение представлений

Пример javascript
let values = [123456, 0.000123, 999999999];
values.forEach(v => {
    console.log(`Обычное: ${v}, Экспонента: ${v.toExponential(3)}`);
});
Обычное: 123456, Экспонента: 1.235e+5
Обычное: 0.000123, Экспонента: 1.230e-4
Обычное: 999999999, Экспонента: 1.000e+9

JS toExponential function comments

En
ToExponential Returns a string representing the number in exponential notation