使用带有php的ajax将总价格变量限制为2位小数

时间:2012-07-03 19:08:04

标签: javascript ajax

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

3 个答案:

答案 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;。但是没有必要,最好使用parseFloatunary plus operator等方法:

var labor = +$('#labor').val();

答案 2 :(得分:0)

您可以在JavaScript中使用Math.round函数。

totalCost = Math.round(totalCost*100)/100;
$('#totalPrice').html(totalCost);