раунд в javascript застрял у меня

#javascript #math #rounding

#javascript #математика #округление

Вопрос:

здравствуйте, я хочу округлить сумму в javascript, но не могу этого сделать и полностью застрял. Мой сценарий таков: у меня есть base сумма и marukup % включено base . На основе этих двух я хочу рассчитать total amount . Я вычислил сумму, но я хочу округлить результат. Я использовал следующую формулу

amount=base ((base/100)*markup

Эта формула всегда дает мне результат без десятичной точки. Я хочу получить точную сумму с точностью до двух десятичных знаков. Я использовал math.round вот так

amount=math.round(base ((base/100)*markup).toFixed(2)

но он всегда возвращает результат без десятичной точки. Например, мое базовое значение равно 121 , а разметка — 5% . amount Должно быть 127.05 . Но приведенная выше формула всегда возвращает 127 . Какие-либо рекомендации?

Комментарии:

1. Не знаю, что вы делаете, но 121 ((121/100)*5) выдает меня 127.05 . Math.round всегда округляет до ближайшего целого числа, которое, насколько я понял, вам не нужно.

2. @Flex Kling Спасибо, но я хочу округлить ответ до 2 десятичных знаков.. Как я могу это сделать?

3. Все, что вы когда-либо хотели знать о округлении в javascript и форматировании как деньги: merlyn.demon.co.uk/js-round.htm#RiJ

Ответ №1:

Я почти уверен, что math.round возвращает целое число. Даже если вы округлите его тогда, это все равно будет просто 127,00.

Вот правильное решение (но это непросто):
Не используйте нецелые значения за деньги!
Это не работает.

Используйте целое число в центах. То есть вместо 127 сохраняйте в своем приложении 12700.
Таким образом, все округления должны работать нормально.

Ответ №2:

toFixed(n) Функция округляет число до n десятичных знаков, в Math.round использовании вообще нет необходимости. Попробуй:

 total = function (base, markup) { return (base   (base * markup / 100)); }; 
amount = total(121,5).toFixed(2);
  

Обратите внимание, что amount будет typeof String и не Number .

Ответ №3:

Это должно сработать: amout = (Math.round((база * (1 разметка))* 100) / 100).toFixed(2)

Кстати, я использовал разметку как 5/100…

Ответ №4:

Для меня это звучит как задача с целочисленным делением. Я бы предположил, что javascript рассматривает 100 как значение int.

Попробуйте это:

 amount=(base ((base/100.toFixed(2))*markup).toFixed(2)