Мне нужно округлить, например, 6.688689
чтобы 6.7
, но это всегда показывает мне 7
.
Мой метод:
Math.round(6.688689);
//or
Math.round(6.688689, 1);
//or
Math.round(6.688689, 2);
Но результат всегда один и тот же 7
... Что я делаю не так?
javascript
rounding
Виталий Пономар
источник
источник
(6.688689).toFixed(1);
.toFixed
возвращает строку. Обязательно оберните результат вNumber()
. Смотрите принятый ответ и другие.Ответы:
источник
Number((456.1235).toFixed(3)) -> 456.123
,Number((1.235).toFixed(2)) -> 1.24
... Глупыйисточник
Math.round(1.005*100)/100
к примеру от MDN1.005 * 100 = 100.49999999999999
(по крайней мере, в движке JS, который я пробовал). Вот почему это не работает и почему вы никогда не должны полагаться на то, что поплавки будут абсолютно точными.Используйте
toFixed()
функцию.источник
Upd (2019-10). Благодаря приведенному ниже коду Reece Daniels, доступному в виде набора функций, упакованных в ожидаемый пакет npm-пакетов (посмотрите).
Вы можете использовать вспомогательную функцию из примера MDN . Чем у вас будет больше гибкости:
Upd (2019-01-15). Похоже, MDN документы больше не имеют этой функции помощника. Вот резервная копия с примерами:
Примеры использования:
источник
У
Number
объекта в JavaScript есть метод, который делает именно то, что вам нужно. Этот метод естьNumber.toPrecision([precision])
.Как и в случае с
.toFixed(1)
ним, он преобразует результат в строку, и его необходимо преобразовать обратно в число. Закончено с использованием+
префикса здесь.простой тест на моем ноутбуке:
источник
1e-10.toPrecision(3)
: «1.00e-10» - округляет до значащих цифр .Если вы хотите не только использовать,
toFixed()
но такжеceil()
иfloor()
на плаву, то вы можете использовать следующую функцию:Производит:
UPD:
Другой возможный способ заключается в следующем:
Производит:
источник
Моя расширенная функция раунда:
Пример вывода:
источник
Увидеть ниже
var original = 28.59;
var result=Math.round(original*10)/10
вернет вам возврат28.6
Надеюсь, это то, что вы хотите ..
источник
источник
Я думаю, что эта функция может помочь.
источник
Я думаю, что ниже функция может помочь
использование:
roundOff(600.23458,2);
вернется600.23
источник
если вы находитесь в контексте node.js, вы можете попробовать mathjs
источник
Существует альтернатива .toLocaleString () для форматирования чисел, с большим количеством опций относительно локалей, группировки, форматирования валюты, обозначений. Некоторые примеры:
Округлить до 1 десятичного знака, вернуть число с плавающей запятой:
Округлить до 2 десятичных знаков, отформатировать как валюту с указанным символом, использовать запятую для тысяч:
Форматировать в качестве национальной валюты:
Округлить до минимума 3 десятичных знака, заставить нули отображать:
Процентный стиль для соотношений. Ввод * 100 со знаком%
источник
источник
У меня есть очень хорошее решение, если toFixed () не работает.
пример
источник
Если вы используете Browserify сегодня, вам придется попробовать: roundTo для очень полезной библиотеки NPM
источник
Незначительная настройка этого ответа :
источник
roundToStep(1.015, 0.001)