将乘法结果格式化为2位小数

问题描述 投票:2回答:1

我在javascript中格式化钱有一些奇怪的行为。我已经阅读并尝试使用this page的多种方法,运气不同,并且不能完全达到预期的结果。

这就是我正在做的事情。我有一个<input>,用户可以输入一个项目的数量,比如他们想要5个X,每个X花费19.34英镑(单价)。

目前我正在使用on change功能,但这无关紧要。

这是我得到的与我应该得到的相比:

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)

我错过了什么?

javascript jquery currency
1个回答
1
投票

你需要在乘法结果上调用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>
© www.soinside.com 2019 - 2024. All rights reserved.