в JavaScript типичный способ округления числа до N десятичных знаков выглядит примерно так:
function roundNumber(num, dec) {
return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
}
Однако этот подход будет округляться максимум до N десятичных знаков, в то время как я хочу всегда округлять до N десятичных знаков. Например, «2,0» будет округлено до «2».
Любые идеи?
toFixed()
( developer.mozilla.org/En/Core_JavaScript_1.5_Reference/… ), но в IE есть ошибки: stackoverflow.com/questions/661562/… ; вам придется написать свою собственную версию ...Ответы:
Это не проблема округления, это проблема отображения. Число не содержит информации о значащих цифрах; значение 2 совпадает с 2.0000000000000. Это когда вы превращаете округленное значение в строку, которая отображает определенное количество цифр.
Вы можете просто добавить нули после числа, например:
(Обратите внимание, что это предполагает, что региональные настройки клиента используют точку в качестве десятичного разделителя, код требует дополнительной работы для работы с другими настройками.)
источник
toFixed()
десятичных знаков в конце после округления?1.02449999998.toFixed(4)
правильно возвращается1.0245
.Я думаю, что есть более простой подход ко всему приведенному здесь, и этот метод
Number.toFixed()
уже реализован в JavaScript.просто напишите:
и т.д...
источник
toFixed()
возвращает строку.Я нашел путь. Это код Кристофа с исправлением:
Прочтите подробности повторения символа с помощью конструктора массива здесь, если вам интересно, почему я добавил «+ 1».
источник
Всегда есть способ сделать что-то лучше.
Я хочу получить четырехзначную точность: 51,94
просто сделать:
результат будет: 51.94
источник
PHP-подобный метод округления
Приведенный ниже код можно использовать для добавления вашей собственной версии Math.round в ваше собственное пространство имен, которое принимает параметр точности. В отличие от десятичного округления в приведенном выше примере, здесь не выполняется преобразование в строки и из строк, а параметр точности работает так же, как в PHP и Excel, при этом положительное значение 1 округляется до 1 десятичного знака, а -1 - до десятков.
из справочника разработчика Mozilla для Math.round ()
источник
Надеюсь, рабочий код (много не тестировал):
источник
Я думаю, что функция ниже может помочь
использование:
roundOff(600.23458,2);
вернется600.23
источник
Это работает для округления до N цифр (если вы просто хотите усечь до N цифр, удалите вызов Math.round и используйте Math.trunc):
Раньше приходилось прибегать к такой логике на Java, когда я создавал компоненты E-Slate для обработки данных . Это потому, что я обнаружил, что добавляя 0,1 много раз к 0, вы получите неожиданно длинную десятичную часть (это связано с арифметикой с плавающей запятой).
Комментарий пользователя к номеру формата, чтобы всегда отображать 2 десятичных знака, вызывает этот метод масштабирования.
Некоторые упоминают, что есть случаи, которые не округляются, как ожидалось, и на http://www.jacklmoore.com/notes/rounding-in-javascript/ предлагается вместо этого:
источник
Если вас не волнует округление, просто добавьте toFixed (x), а затем удалите конечные 0 и точку, если это необходимо. Это не быстрое решение.
источник
format(1.2, 5)
и получил1.2
, хотя ожидал1.20000
.