我正在努力寻找计算篮子价格和总数的最佳方法。 所有产品价格均以2位小数点数表示,但是,如果将折扣添加到50%的篮子中,则以37.27美元为例,最终得出的数字为18.635美元,小数点后3位。现在我希望计算结果准确,但是舍入3位小数并不能总是得到预期的结果。
方案
我的购物篮中有5件商品,原价如下:
给我们总计$455.98
当我添加50%的全球折扣时 - 取上面的总数,这会给我$227.99
。现在,如果我不必在应用折扣后获得每个项目的数字,这将工作正常 - 当我想将项目传递给PayPal Express Checkout时就是这种情况。除非总数等于购物篮中所有商品的总数,否则请求将失败。
将每个除以2(50%)后的上述数字为:
给予我们与总数除以2时完全相同的总数。 问题是我不想在我的购物篮中输入3位小数,因此将结果四舍五入为:
加起来为$228
,当乘以2时,我们得到的数字与我们最初在篮子中的数字不同而没有应用折扣。
解决此类情景的最佳方法是什么?
答案 0 :(得分:1)
这是一个很好的问题。我的投票是对每个项目应用50%的折扣 - 将该数字四舍五入到数字格式的2位小数 - 并将该数字保存为购物车订单记录的一部分,即使您没有向客户展示。然后像往常一样添加这些数字以获得购物车产品总数。
原因:在某些时候某人需要为每种产品收取明确的金额。并考虑回报。如果你不必纠正.01差异,那么它将使回报变得更加容易。
答案 1 :(得分:0)
您可以使用bcmul()
,确保您的号码准确无误。
如果您想确保价格总是有两位小数,可以使用number_format()
。