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 - 16: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 - 15:08
#permalink

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

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


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

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

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


Автор: Гость (не зарегистрирован), дата: 9 мая, 2011 - 16: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 - 20: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


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

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


Автор: littleleshy (не зарегистрирован), дата: 25 августа, 2011 - 01: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 - 16:06
#permalink

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

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

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


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

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


Автор: rus19781 (не зарегистрирован), дата: 12 апреля, 2012 - 03: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 - 16:00
#permalink

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


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

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


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

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

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

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

получаю - 990637949789927.25


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
4 + 10 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Реклама
Содержание

Учебник javascript

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

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

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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