Я пропустил стандартный вызов API, который удаляет завершающие незначительные нули из числа?
Ex.
var x = 1.234000 // to become 1.234;
var y = 1.234001; // stays 1.234001
Number.toFixed () и Number.toPrecision () не совсем то, что я ищу.
javascript
regex
math
numbers
Стивен
источник
источник
1.234000 === 1.234
.parseFloat(n)
?Ответы:
Если вы преобразуете его в строку, он не будет отображать никаких завершающих нулей, которые не сохраняются в переменной в первую очередь, поскольку она была создана как число, а не строка.
источник
var n = 1.245000000000001
(предполагается , что она незначительна , чтобы представить пользователь)У меня был похожий случай, когда я хотел использовать его
.toFixed()
там, где это необходимо, но я не хотел, чтобы там были отступы. Поэтому я в итоге использовал parseFloat в сочетании с toFixed.Исправлено без дополнения
Еще один вариант, который делает почти то же самое.
Этот ответ может помочь вашему решению
toFixed
округлит / дополнит число до определенной длины, но также преобразует его в строку. Преобразование этого обратно в числовой тип не только сделает число более безопасным для арифметического использования, но также автоматически отбросит любые конечные 0. Например:Потому что даже если вы определите число с конечными нулями, они будут отброшены.
источник
parseFloat(n).toFixed(4);
вместо твоего фактического ответа. Мне жаль.+(n.toFixed(4))
?Сначала я использовал комбинацию ответов Маттилиры и Гэри:
Полученные результаты:
Несколько проблемный случай - 0.10001. Я закончил тем, что использовал эту более длинную версию:
Обновление : И это более новая версия Гэри (см. Комментарии):
Это дает те же результаты, что и выше.
источник
toFixed(4).replace(/([0-9]+(\.[1-9]+)?)(\.?0+$)/,"$1")
([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)
replace(/[,.][1-9]+(0+)/,'')
?toFixed
Метод будет делать соответствующие округления при необходимости. Это также добавит конечные нули, что не всегда идеально.Если вы приведете возвращаемое значение к числу, эти конечные нули будут удалены. Это более простой подход, чем выполнение собственной математики округления или усечения.
источник
toFixed
вызов). это странный крайний случай UX.У меня было в основном то же самое требование, и я обнаружил, что для этой функции нет встроенного механизма.
В дополнение к обрезке конечных нулей мне также необходимо было округлить и отформатировать выходные данные для текущей локали пользователя (т. Е. 123 456,789).
Вся моя работа над этим была включена как prettyFloat.js (MIT Licensed) на GitHub: https://github.com/dperish/prettyFloat.js
Примеры использования:
Обновлено - август 2018 г.
Все современные браузеры теперь поддерживают API Интернационализации ECMAScript , который обеспечивает сравнение строк с учетом языка, форматирование чисел и форматирование даты и времени.
Для старых браузеров вы можете использовать этот полифилл: https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en
источник
Как насчет просто умножить на один, как это?
источник
Вы можете попробовать это, чтобы минимизировать плавающие числа
источник
Чистый регулярный ответ
Интересно, почему никто не дал никому!
источник
Мне нужно было решить и эту проблему, когда Django отображал значения десятичного типа в текстовом поле. Например, когда «1» было значение. Это будет показывать «1.00000000». Если значение равно «1.23», оно будет отображать «1.23000000» (в случае значения «decimal_places», равного 8)
Использование parseFloat не было для меня вариантом, поскольку возможно, что оно не возвращает точно такое же значение. toFixed не был вариантом, так как я не хотел ничего округлять, поэтому я создал функцию:
источник
Ни одно из этих решений не работало для меня для очень маленьких чисел. http://numeraljs.com/ решил это для меня.
источник
Если вы не можете использовать Float по какой-либо причине (например, с использованием money-float) и уже начинаете со строки, представляющей правильное число, вы можете найти это решение удобным. Он преобразует строку, представляющую число, в строку, представляющую число без конечных нулей.
источник
Прочитав все ответы - и комментарии - я закончил с этим:
Я знаю, используя
eval
может быть вредным, но это мне очень помогло.Так:
Если вы хотите ограничить десятичные разряды, используйте,
toFixed()
как указали другие.Вот и все.
источник
Мне нужно было удалить любые конечные нули, но оставить как минимум 2 десятичных знака, включая все нули.
Числа, с которыми я работаю, представляют собой 6 строк десятичных чисел, сгенерированных .toFixed (6).
Ожидаемый результат:
Решение:
Логика:
Запустите функцию цикла, если последний символ строки равен нулю.
Удалите последний символ и обновите строковую переменную.
Если в обновленной строке последний символ не равен нулю, завершите цикл.
Если обновленная строка с третьего по последний символ является плавающей точкой, конец цикла.
источник
Вот возможное решение:
источник
parseFloat()
будет очень уместно.