我在使用 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)
我错过了什么?
最佳答案
您需要在乘法结果上调用 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>
关于javascript - 将乘法结果格式化为小数点后两位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52801994/