我有一个独特的问题,我即将失去理智。
即时通讯使用js购物车(simplecart),当我向购物车添加商品时,它会在价格中添加2或从第15个十进制中减去3:
这是产品成本:35,99 这是我在添加此单品时计算的总数:
€35,990000000000002
我认为这可能与运费或税收有关,但即使在禁用这些模块后,它仍然是相同的。此价格也会显示为购物车中的商品价格。
这里是我的jsfiddle:
我应该如何解决这个问题?我不知道什么时候这个潜入,已经剥离了整个项目试图隔离问题,但它甚至发生在这个最小的设置中,我似乎记得这个车工作得很好。
可能是什么问题?
答案 0 :(得分:0)
这是浮点精度的问题。 Javascript没有十进制类型,因此所有数字都以浮点形式处理,这意味着您可以获得近似而不是精确表示。
答案 1 :(得分:0)
simpleCart.currency({
code: "EUR" ,
name: "Euro" ,
symbol: " € " ,
delimiter: " " ,
decimal: "," ,
after: false ,
accuracy: 2
});
将准确度更改为两个位置。您应该使用服务器端验证来计算最终成本,并仅使用javascript来指示用户的成本。