0

我有一个独特的问题,即将失去理智。

我使用的是 js 购物车(simplecart),当我向购物车添加一些东西时,它会在小数点后 15 位从价格中添加 2 或减去 3:

这是产品的成本:35,99 这是当我添加这个单一产品时它计算的总数:

€ 35,990000000000002

我认为这可能与运费或税收有关,但即使禁用了这些模块,它仍然是一样的。此价格也显示为购物车中的商品价格。

这是我的jsfiddle:

http://jsfiddle.net/dJYNk/

我应该如何解决这个问题?我不知道这是什么时候偷偷溜进来的,已经剥离了整个项目试图隔离问题,但即使在这个最小的设置中也会发生,我似乎记得这辆推车工作得很好。

可能是什么问题?

4

2 回答 2

0

这是浮点精度的问题。Javascript 没有十进制类型,因此所有数字都以浮点数处理,这意味着您得到的是近似值而不是精确表示。

于 2012-10-18T09:48:52.820 回答
0
simpleCart.currency({
    code: "EUR" , 
      name: "Euro" ,
    symbol: " € " ,
    delimiter: " " , 
    decimal: "," , 
    after: false ,
    accuracy: 2
});

将精度更改为两个位置。您应该使用服务器端验证来计算最终成本,并且只使用 javascript 向用户指示成本。

于 2012-10-18T09:51:24.900 回答