如何使用Javascript将购物车结账价格精确到便士?

时间:2011-04-08 15:10:14

标签: javascript math rounding currency cart

如何使用Javascript将购物车结帐价格精确到便士?

现在拿出所有试用版.rounds等后我正在尝试..我用1.5高的产品/价格进行测试,价格上涨1.5美分。

            for (var i = 0; i < Cookie.products.length; i++) {
            boolActive = Cookie.products[i].og_active;              
            if (boolActive)
            {
                itemPrice = Cookie.products[i].price;
                itemQty = Cookie.products[i].quantity;
                itemDiscountPercent = Cookie.products[i].discount_percent;

                subtotal = itemPrice * itemQty;
                priceDiscount = (subtotal * itemDiscountPercent);
                                    discountAmount += priceDiscount;
            }
        }
        if (!isNaN(discountAmount))
        { 
            var newCartTotal = (cartTotal - priceDiscount);
            alert("New Cart Total: " + newCartTotal);
        }

3 个答案:

答案 0 :(得分:1)

var newCartTotal = (cartTotal - pricediscount).toFixed(2)

将为您提供值,但它将是一个字符串。如果您需要它保持数字,请使用:

var newCartTotal = ((cartTotal - pricediscount * 100) << 0) / 100;

答案 1 :(得分:0)

您需要为每个订单项舍入折扣:priceDiscount = round_to_hundredth(subtotal * itemDiscountPercent)

请注意,如果您添加未结果的结果然后舍入总和,则此结果可能与您获得的结果不一致。但是,这是发票通常在手工计算时的工作方式(特别是因为每个项目可以有不同的折扣百分比,因此为每一行计算折扣)。

我认为你遗漏了一句话discountAmount += priceDiscount

答案 2 :(得分:0)

将您的代码修改为:

priceDiscount = parseFloat( (subtotal * itemDiscountPercent).toFixed(2) );

newCartTotal = parseFloat( (cartTotal - priceDiscount).toFixed(2) );