我使用以下代码段来计算总价。这很有效,除了#totalPrice在某些情况下扩展到例如$ 267.9999999999。如何将此函数中的#totalPrice重新格式化为二进制小数,这是处理价格的标准。
function getTotalCost(inventory) {
if(inventory) {
getTotalParts(inventory);
getTotalMarkup(inventory);
}
var labor = $('#labor').val() * 1;
var totals = 0;
for(i in totalMarkup) {
totals += totalMarkup[i];
}
totalCost = totals+labor;
/*if(totals == 0) {
totalCost = 0;
}*/
$('#totalPrice').html(totalCost);
}
答案 0 :(得分:1)
使用javascript时,浮点总是坏的。你能做的最好的就是把它围起来。
但在这种情况下你可以做到
(totalCost).toFixed(2);
答案 1 :(得分:1)
你可以:
$('#totalPrice').html(totalCost.toFixed(2));
请参阅:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number/toFixed
请注意,toFixed
方法返回格式化的数字,因此将数字转换为字符串。这不是问题,因为html
想要一个字符串,但是请记住,为了避免在预期数字总和时连接字符串。我相信你出于这个原因使用$('#labor').val() * 1;
。但是没有必要,最好使用parseFloat或unary plus operator等方法:
var labor = +$('#labor').val();
答案 2 :(得分:0)
您可以在JavaScript中使用Math.round函数。
totalCost = Math.round(totalCost*100)/100;
$('#totalPrice').html(totalCost);