Можете ли вы округлить число в javascript до 1 символа после десятичной точки (правильно округлено)?
Я пробовал * 10, раунд, / 10, но он оставляет два десятичных знака в конце int.
javascript
rounding
ходунки
источник
источник
Math.round(n * 10) / 10
работает. Какой у тебя код?Ответы:
Math.round(num * 10) / 10
работает, вот пример ...если вы хотите, чтобы он имел одно десятичное место, даже если это будет 0, то добавьте ...
РЕДАКТИРОВАТЬ: Добавить раунд с функцией точности ...
Используя этот принцип, для справки, вот удобная маленькая круглая функция, которая принимает точность ...
... Применение ...
... по умолчанию округляется до ближайшего целого числа (точность 0) ...
... и может использоваться для округления до ближайших 10 или 100 и т. д. ...
... и правильная обработка отрицательных чисел ...
... и может комбинироваться с toFixed для последовательного форматирования в виде строки ...
источник
.toFixed()
как он возвращает строку, когда вы, возможно, хотите число.parseFloat
удалит десятичные дроби, оставленные,.toFixed()
если это целое число (нули). Как правило, если вы хотите сделать математику, лучше последовать вашему первому примеру. Если вы хотите отобразить число в вашем пользовательском интерфейсе, используйте.toFixed()
..toFixed()
как это может вернуть разные результаты округления для разных браузеров. Прочитайте этот пост для деталей по теме!источник
toFixed()
возникают глюки - я видел это в браузере Chrome, где я звонюtoFixed()
, затем преобразую в строку, и он показывает что-то вроде10.00000000068
- странно. Не могу воспроизвести это надежно, хотя..toFixed()
поскольку оно возвращает,String
когда вы, возможно, хотитеNumber
Если вы используете,
Math.round(5.01)
вы получите5
вместо5.0
.Если вы используете,
toFixed
вы сталкиваетесь с проблемами округления .Если вы хотите лучшее из обоих миров, объедините два:
Возможно, вы захотите создать функцию для этого:
источник
lodash
имеетround
метод:Docs .
Источник .
источник
Я голосую за
toFixed()
, но, для протокола, вот еще один способ, который использует сдвиг битов, чтобы привести число к int. Таким образом, он всегда округляется до нуля (вниз для положительных чисел, вверх для отрицательных).Но, эй, поскольку нет вызовов функций, это быстро. :)
А вот тот, который использует сопоставление строк:
Я не рекомендую использовать строковый вариант, просто говорю.
источник
Попробуйте с этим:
менее сложный и простой в реализации ...
с этим вы можете создать функцию для:
Показать фрагмент кода
РЕДАКТИРОВАТЬ : см. Это Как округлить, используя КРУГЛЫЙ ПОЛОВИНА UP. Режим округления, который большинство из нас учили в начальной школе
источник
x = число, n = десятичные разряды:
источник
Почему не просто
источник
источник
Чтобы завершить лучший ответ:
Номер входного параметра может «не» всегда быть числом, в этом случае .toFixed не существует.
источник
Версия принятого ответа ES 6:
источник
Используя метод toPrecision:
источник
12.345.toPrecision( 2 )
есть"12"
.Если ваш метод не работает, пожалуйста, опубликуйте свой код.
Однако вы можете выполнить задачу округления следующим образом:
Даст вам 234,56
по аналогии
Даст 234,5
Таким образом, вы можете использовать переменную вместо константы, как указано выше.
источник
Маленький угловой фильтр, если кто-то хочет:
используйте если через:
:)
источник
В общем, округление выполняется путем масштабирования:
round(num / p) * p
Использование экспоненциальной записи правильно обрабатывает округление чисел + ve. Однако этот метод не может правильно округлить все крайние случаи.
Здесь также есть одна функция, которую я написал для выполнения арифметического округления, вы можете проверить это самостоятельно.
источник
Кажется, что это работает надежно во всем, что я на это бросаю:
Он округляется, поэтому вам может потребоваться изменить его в соответствии с вариантом использования. Это должно работать:
источник
Если вы заботитесь о правильном округлении, тогда:
В противном случае у вас уже есть ответ от предыдущих сообщений
источник
Math.round( num * 10) / 10
не работаетНапример,
1455581777.8-145558160.4
дает вам1310023617.3999999
.Так что используйте только
num.toFixed(1)
источник
Я сделал один, который возвращает тип числа, а также помещает десятичные дроби, только если они необходимы (без заполнения 0).
Примеры:
Код:
источник
Я нашел способ избежать проблем с точностью:
источник
Спасибо
источник