Javascript.RU

toFixed

Синтаксис

numObj.toFixed([fractionDigits])

Аргументы

fractionDigits
Необязательный. Количество цифр после десятичного знака. Это число должно находиться в диапазоне от 0 до 20 включительно. Если не указано, то считается равным 0

Описание, примеры

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

Если число больше 1e+21, то метод просто вызывает Number.toString() и возвращает строку в экспоненциальной записи.

Инициирует исключение RangeError, если fractionDigits меньше 0 или больше 20. Хотя некоторые реализации могут поддерживать значения больше 20.

Инициирует исключение TypeError, если объект не является Number.

var n = 12345.6789;
n.toFixed();              // 12346: округление, длина дробной части ноль

n.toFixed(1);             // 12345.7: округление 

n.toFixed(6);             // 12345.678900: добили нулями

(1.23e+20).toFixed(2);    // 123000000000000000000.00

(1.23e-10).toFixed(2)     // 0.00

См. также


Автор: xDev (не зарегистрирован), дата: 13 января, 2011 - 15:11
#permalink

При использования метода toFixed необходимо помнить о его не правильной имплементаци в IE6 IE7 IE8.
не верно: 0.6=toFixed()=0
не верно:-0.8=toFixed()=0
верно: 0.6=toFixed()=1
верно: -0.8=toFixed()=-1


Автор: Marwell, дата: 13 апреля, 2011 - 14:08
#permalink

Почему не работает?

var i=0.55555555
i.toFixed(3)
alert (i)


Автор: typeUndefined (не зарегистрирован), дата: 5 июля, 2011 - 15:27
#permalink

Потому, что нужно вот так

var i=0.55555555
i = i.toFixed(3)
alert (i)


Автор: Гость (не зарегистрирован), дата: 9 мая, 2011 - 15:47
#permalink

Метод toFixed округляет число. Например,
var n = 123456.789;
n.toFixed(); // Вернёт строку "123457", а не "123456"
или
n.toFixed(2); // Вернёт строку "123456.79", а не "123456.78"
В вашем случае, Marwell:
var i = 0.55555555;
i.toFixed(3); // Вернёт строку "0.556", а не "0.555"
Что же вернёт метод toFixed() в следующем примере?
var k = 0.6;
k.toFixed(); /* Если число округлить, то получится 1. Но IE возвращает строку "0", хотя другие браузеры возвращают "1". */
Аналогично и ...
-0.8.toFixed(); /* Число округляем и получаем строку "-1", но только не IE. IE возвратит строку "0", а все остальные "-1" */


Автор: Гость (не зарегистрирован), дата: 29 мая, 2013 - 19:38
#permalink

не сторонник IE, но...на наткнулся на такое
.toFixed() в Firefox 21.0, Chrome, Safari и Opera - результатом такой строки
parseFloat(71.175).toFixed(2) будет 71.17 !!!!!!!!!!!!!!!!!!!!

а результатом выражения
Math.round(parseFloat(71.175) * 100) / 100 будет 71.18, т.е. результат правильно округленный

при этом IE на тех же выражениях выдает всегда 71.18 ! получается все браузеры дают не совсем правильные результаты !!! но каждый по-своему... Sad


Автор: Гость (не зарегистрирован), дата: 17 августа, 2016 - 17:10
#permalink

Попробуйте вывести:
var x = 71.175;
alert(x.toFixed(20));

Вы получите 71.1749999...

Проблема в том, что число 71.175 в двоичной записи не может быть задано конечной двоичной дробью. А значит оно не может быть сохранено точно, и при обратном преобразовании к десятичному числу мы получаем 71.1749999...

Именно с этим искаженным числом и работает метод toFixed. Поэтому получаем 71.17, а не 71.18. Все корректно, просто ошибка округления

Чтобы такого не было используйте Math.round()


Автор: Marwell, дата: 20 августа, 2011 - 09:30
#permalink

В чем отличие
toFixed от
toPrecision
оба возвращают строковое адекватное округление!?


Автор: littleleshy (не зарегистрирован), дата: 25 августа, 2011 - 00:20
#permalink

Marwell, читаем внимательно:

toPrecision:
Округляет до общего количества цифр вне зависимости: после запятой или нет.

То есть:
/toPrecision(4)/
-40: -40.00
4: 4.000
400: 400.0
40000: 4.000e+4

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

То есть:
/toFixed(3)/
-40: -40.000
4: 4.000
400: 400.000
40000: 40000.000


Автор: Олег152 (не зарегистрирован), дата: 3 ноября, 2011 - 15:06
#permalink

Интересный вопрос, а если числа не до целых округляются, а до 6-го знака? И если не 0,6, а скажем 2,0000006? Сохраняется ли баг IE?

Почему-то FireFox при округлении до 6 знаков округляет 2,0000005 (половину от одной миллионной) до 2,000001 (до одной миллионной), а C#, естественно, (два варианта Math.Round(decimal) - вниз либо к ближайшему "четному"), т.е. всегда до 2.

Почему так? Как округлить число на js правильно?


Автор: eat (не зарегистрирован), дата: 30 октября, 2012 - 23:25
#permalink

Фантастический вопрос.
Для начала вам нужно научиться считать до 6 и выучить правила округления.
А потом попытайтесь найти 10 совпадений между зеленым и мокрым, громким и холодным, ну и между FireFox и С#


Автор: rus19781 (не зарегистрирован), дата: 12 апреля, 2012 - 02:59
#permalink

Я вот такие вещи toFixed(3) - не кроссбраузерные, если и запоминаю, то только для того что бы неиспользывать.

allSumma=Math.round(allSumma*10)/10; // *.3
allSumma=Math.round(allSumma*100)/100; // *.03
allSumma=Math.round(allSumma*1000)/1000;// *.003

В школе математику надо не прогуливать хотя бы в начальных классах


Автор: Гость (не зарегистрирован), дата: 28 февраля, 2013 - 15:00
#permalink

Делить на 10, 100, 1000 опасно. Потом при печати может получиться 123.39999999996 вместо 123.4


Автор: Гость (не зарегистрирован), дата: 4 февраля, 2013 - 17:46
#permalink

toFixed - добивает еще в конце 0. Math.round(allSumma*10)/10; - не добъет 0 в конец.


Автор: Гость (не зарегистрирован), дата: 16 июля, 2013 - 10:52
#permalink

Я вот такие вещи toFixed(3) - не кроссбраузерные - согласен, в мазиле не работает

но там где работает наблюдаю:

var str = 990637949789927.2 ;
str..toFixed(2) ;

получаю - 990637949789927.25


Автор: Гость (не зарегистрирован), дата: 9 июля, 2014 - 16:32
#permalink

Автор, забабань комент или статейку как сделать такое:

toFixed( X ), рубит всё до икса,

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

Писать целую функцию для одного float, - кажется ужасным и страшным по нагрузке.

А нужно мне вот что,

что бы все цифры после запятой были видны. Без всяких экспонент без е без степеней.

просто строчку. float ( f ) = 1.234567812312 - вот все их и нужно рисовать.

начался период - можно срубить.

а если 1.234560000 - то рубить под шестёрку. и т.д

я понимаю что ПИ будет непонятно как рисовать. Но эти экспоненты, прямо разрезают глаз.

Как это сделать?


Автор: Гость (не зарегистрирован), дата: 16 июля, 2014 - 05:38
#permalink

Случайно заметил:

var i = -0.00001;
i.toFixed(2);

результат: "-0.00" (с минусом)


Автор: Гость (не зарегистрирован), дата: 10 ноября, 2014 - 17:44
#permalink

Почему в Windows98 в IE5 не срабатывает этот код:

var xk1 = parseFloat(xp1.toPrecision(13));
xk1 = parseFloat(xk1.toFixed(13));
var xk2 = parseFloat(xp2.toPrecision(13));
xk2 = parseFloat(xk2.toFixed(13));
var xk3 = parseFloat(xp3.toPrecision(13));
xk3 = parseFloat(xk3.toFixed(13));


Автор: Гость (не зарегистрирован), дата: 1 августа, 2015 - 07:15
#permalink

А существует ли такая же функция, но только чтобы нули после точки стирались ?
То есть toFixed(2) для 123 оставлял бы 123 (без 2 нулей), а 123.123 менял бы уже на 123.12 как положено.


Автор: Dyavol (не зарегистрирован), дата: 4 сентября, 2015 - 14:36
#permalink

Можно на единицу умножить то, что получилось после toFixed


Автор: Гость (не зарегистрирован), дата: 14 июля, 2016 - 15:00
#permalink

var n = 12345.6789;
alert(n);
n.toFixed(1);
alert(n);

Выдает 12345.6789
в чем причина?


Автор: forevist (не зарегистрирован), дата: 18 августа, 2016 - 14:44
#permalink

попробуйте n=n.toFixed(1) перед вторым алертом


Автор: Гость (не зарегистрирован), дата: 25 сентября, 2016 - 14:42
#permalink

а как округлить до 10?
например число 2543 округлить до 2540?
toFixed(-1) не работает


Автор: Гость (не зарегистрирован), дата: 30 сентября, 2016 - 19:28
#permalink

можно разделить на 10, затем округлить до целого и умножить на 10


 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum