0

我正在使用以下代码片段来计算总价。这很好用,除了 #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);
}
4

3 回答 3

1

使用 javascript 时,浮点数总是很糟糕。你能做的最好的就是把它四舍五入。

但在这种情况下你可以做

(totalCost).toFixed(2);
于 2012-07-03T19:11:25.747 回答
1

你可以有:

$('#totalPrice').html(totalCost.toFixed(2));

看:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number/toFixed

请注意,该toFixed方法返回一个格式化的数字,因此将数字转换为字符串。这不是问题,因为html需要一个字符串,但请记住,当您期望数字总和时避免字符串连接。我相信你使用$('#labor').val() * 1;这个正是这个原因。但是,这不是必需的,最好使用parseFloat一元加运算符之类的方法:

var labor = +$('#labor').val();
于 2012-07-03T19:20:26.250 回答
0

你可以像这样在 JavaScript 中使用 Math.round 函数。

totalCost = Math.round(totalCost*100)/100;
$('#totalPrice').html(totalCost);
于 2012-07-03T19:11:42.820 回答