JavaScript метод Number.prototype.toFixed()

Определение и применение

JavaScript метод toFixed() форматирует числовое значение в строковое, сохраняя при этом указанное количество десятичных знаков. При модуле числа меньше 1e21 результат имеет фиксированное количество знаков после точки. Для явного экспоненциального представления вы можете воспользоваться методом toExponential().

Проверьте поведение в редактируемом примере.

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Number.toFixed
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
toFixed✓1✓12✓1✓7✓2✓18✓4✓10.1✓1✓1.0✓4.4✓1

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
// десятичные знаки после запятой отсутствуют
num.toFixed();

// количество десятичных знаков после запятой соответствует значению, указанному в параметре метода
num.toFixed( digits );

Спецификация

ECMAScript: Number.prototype.toFixed()

Значения параметров

Number: справочные сведения
Параметр Описание
digits Целое число, которое определяет количество десятичных знаков после запятой. Числовое значение должно находиться в диапазоне от 0 до 100 включительно. Необязательный параметр. Если аргумент не используется или undefined, то значением по умолчанию считается 0. Если значение параметра digits является нецелым числовым значением, то оно будет усечено в сторону нуля до целого числа.

Исключения

Number: справочные сведения
Тип исключения Описание
RangeError Возникает в том случае, если параметр digits не находится в диапазоне от 0 до 100 (включительно).
TypeError Возникает в том случае, если метод вызывается для значения, которое не является числовым примитивом или объектом-обёрткой Number.

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

Возвращает строку; исходное число не меняется. NaN и бесконечности дают "NaN", "Infinity" или "-Infinity". Округляется двоичное значение, поэтому (2.55).toFixed(1) равно "2.5". Это форматирование, а не точная десятичная арифметика.

Примеры, попробуйте сами

Как задать число знаков после точки

Измените число и digits; сравните округление, дополнение нулями и ошибки диапазона.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
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))