JavaScript метод Number.prototype.toFixed()
Определение и применение
JavaScript метод toFixed() форматирует числовое значение в строковое, сохраняя при этом указанное
количество десятичных знаков. При модуле числа меньше 1e21 результат имеет фиксированное количество
знаков после точки. Для явного экспоненциального представления вы можете воспользоваться методом
toExponential().
Проверьте поведение в редактируемом примере.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
toFixed | 1 | 12 | 1 | 7 | 2 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
// десятичные знаки после запятой отсутствуют
num.toFixed();
// количество десятичных знаков после запятой соответствует значению, указанному в параметре метода
num.toFixed( digits );
Спецификация
ECMAScript: Number.prototype.toFixed()
Значения параметров
| Параметр | Описание |
|---|---|
digits |
Целое число, которое определяет количество десятичных знаков после запятой. Числовое значение должно
находиться в диапазоне от 0 до 100 включительно. Необязательный параметр. Если аргумент не используется
или undefined, то значением по умолчанию считается 0. Если значение параметра
digits является нецелым числовым значением, то оно будет усечено в сторону нуля до целого числа.
|
Исключения
| Тип исключения | Описание |
|---|---|
RangeError |
Возникает в том случае, если параметр digits не находится в диапазоне от 0 до 100 (включительно).
|
TypeError |
Возникает в том случае, если метод вызывается для значения, которое не является числовым примитивом или
объектом-обёрткой Number.
|
Возвращаемое значение и особенности
Возвращает строку; исходное число не меняется. NaN и бесконечности дают "NaN",
"Infinity" или "-Infinity". Округляется двоичное значение, поэтому (2.55).toFixed(1) равно
"2.5". Это форматирование, а не точная десятичная арифметика.
Примеры, попробуйте сами
Как задать число знаков после точки
Измените число и digits; сравните округление, дополнение нулями и ошибки диапазона.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
var num = 12345.6789 // инициализируем числовую переменную
try {
console.log(num.toFixed())
} catch (error) {
console.log(error.name)
} // возвращаемое значение "12346"
try {
console.log(num.toFixed(3))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "12345.679"
try {
console.log(num.toFixed(2))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "12345.68"
try {
console.log(num.toFixed(1.1))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "12345.7"
try {
console.log(num.toFixed(1.9))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "12345.7"
try {
console.log(num.toFixed(10))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "12345.6789000000"
try {
console.log(num.toFixed(true + true))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "12345.68"
try {
console.log(num.toFixed(-1))
} catch (error) {
console.log(error.name)
} // RangeError
try {
console.log(num.toFixed(101))
} catch (error) {
console.log(error.name)
} // RangeError
var str = '12345.6789' // инициализируем строковую переменную
try {
console.log(str.toFixed())
} catch (error) {
console.log(error.name)
} // TypeError
try {
console.log((123.45).toFixed(1))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "123.5"
// 123.toFixed(2) — SyntaxError: точка читается как дробная часть; пишите (123).toFixed(2) или 123..toFixed(2)
try {
console.log((123).toFixed(2))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "123.00"
try {
console.log((1.11e20).toFixed(2))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "111000000000000000000.00"
try {
console.log((1.11e21).toFixed(2))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "1.11e+21"
try {
console.log((1.11e-1).toFixed(2))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "0.11"
try {
console.log((1.11e-2).toFixed(2))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "0.01"
try {
console.log((1.11e-3).toFixed(2))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "0.00"
try {
console.log((1.11e-10).toFixed(2))
} catch (error) {
console.log(error.name)
} // возвращаемое значение "0.00"
// Двоичная дробь и граница экспоненциальной записи.
console.log('Двоичное округление:', (2.55).toFixed(1))
console.log('Граница:', (1e21).toFixed(2))
console.log('Отрицательная граница:', (-1e21).toFixed(2))
console.log('Длина строки при 100 знаках:', (1).toFixed(100).length)
console.log('Усечение к нулю:', (1.25).toFixed(-0.9))