1

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

现在,在取出所有试用版 .rounds 等后,我正在尝试.. 使用 15 种产品/价格进行测试,我的价格太高了 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);
        }
4

3 回答 3

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

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

var newCartTotal = ((cartTotal - pricediscount * 100) << 0) / 100;
于 2011-04-08T15:22:36.950 回答
0

您需要对每个订单项的折扣进行四舍五入:priceDiscount = round_to_hundredth(subtotal * itemDiscountPercent)

请注意,如果您将未取整的结果相加然后对总和进行四舍五入,则此结果可能与您得到的结果不一致。然而,这是手工计算发票时通常的工作方式(特别是因为每个项目可以有不同的折扣百分比,所以折扣是针对每一行计算的)。

我想你漏掉了一句话discountAmount += priceDiscount

于 2011-04-08T15:15:30.000 回答
0

将您的代码修改为:

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

和:

newCartTotal = parseFloat( (cartTotal - priceDiscount).toFixed(2) );
于 2011-04-08T15:46:35.730 回答