Если дробная часть числа равна 0.5 или больше, то аргумент округляется к следующему большему целому. Если дробная часть меньше, чем 0.5, то округление производится до ближайшего меньшего целого.
// возвратит 20
x=Math.round(20.49)
// возвратит 21
x=Math.round(20.5)
// возвратит -20
x=Math.round(-20.5)
// возвратит -21
x=Math.round(-20.51)
Очень жаль, что нет функции, которая округляет до нужного знака. В статье неплохо бы ее написать.
Округление до нужной точности после запятой
Для этого используется метод toFixed.
0.1234.toFixed(2) = 0.12
.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 ! похоже "правильность" js еще и от браузера зависит
Не могу найти функцию, которая возвращает дробную часть числа
123.456 % 1
и взять цифр сколько там надо
можно еще так:
123.456.toString().split(/\./)[1];
Стоит еще раз поставить ударение: toFixed возвращает строковое представление числа, а поскольку и сравнение и сложение для строковых переменных в JS возможно (последнее становится конкатенацией) то желательно применять что то вроде
Или более жестко:
var aaa=Math.round(aaa*0.045359237*100)/100
Дельный совет, спасибо. Провернуть такое при помощи toFixed() почему-то не получилось.
Собственно функция round с нужной точностью, для страждущих:
function round(a,b) { b=b || 0; return Math.round(a*Math.pow(10,b))/Math.pow(10,b); }Вот ещё один вариант, но за точность не ручаюсь:
function round(a,b) { b=b||0; return parseFloat(a.toFixed(b)); }Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.