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)); // < 0RangeError: 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. Однако для большинства пользовательских сценариев эти изменения незаметны.
Современные реализации также гарантируют, что для чисел, имеющих точное представление в виде десятичной дроби с заданным количеством знаков после запятой, округление происходит предсказуемо.
Расширенные примеры
Обработка специальных числовых значений
console.log(NaN.toExponential(2));
console.log(Infinity.toExponential());
console.log((-Infinity).toExponential(3));NaN Infinity -Infinity
С отрицательными числами
console.log((-123.456).toExponential(2));-1.23e+2
Разное количество знаков после запятой для одного числа
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
Использование в научных расчетах
// Постоянная Авогадро
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
Сравнение представлений
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