Формат умножения результата до 2 десятичных знаков - PullRequest
0 голосов
/ 14 октября 2018

У меня странное поведение при форматировании денег в javascript.Я прочитал и попытался использовать несколько методов из этой страницы с разной степенью удачи и не могу получить ожидаемый результат.

Вот что я делаю.У меня есть <input>, где пользователь может ввести количество элемента, скажем, что они хотят 5 из X, и каждый X стоит £ 19,34 (цена за единицу).

В настоящее время я делаю это с помощьюсмените функцию, но это не должно иметь значения.

Вот что я получаю по сравнению с тем, что я должен получить:

5 x £ 19,34 = Я получаю: £96.7,Я хочу: £96.70

6 x £ 19,34 = Я получаю: £116.03999999999999, я хочу: £116.04

3 x £ 19,34 = Я получаю: £58.019999999999996, Я хочу: £58.02

С приведенными выше примерами у меня есть следующий код:

$('.js_qty').change(function () {
  qty = $(this).val()
  $('#price').text(qty * unitPrice.toFixed(2))
});

Эта строка, в частности, не дает ожидаемого результата:

unitPrice.toFixed(2)

Чего мне не хватает?

1 Ответ

0 голосов
/ 14 октября 2018

Вам нужно вызвать toFixed(2) по результату умножения, а не напрямую по unitPrice:

var unitPrice = 19.34;

$('.js_qty').change(function() {
  var qty = $(this).val();
  $('#price').text((qty * unitPrice).toFixed(2));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="js_qty">
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
</select>
<div id="price"></div>
...