Javascript中的数字计算

时间:2018-05-09 00:47:29

标签: javascript numbers

let price: number = 0.7; // $
let discountPrice: number = 0.6; // $

let netPrice: number = price - discountPrice;

console.log(netPrice); // 0.09999999999999998 but not 1 cent

由于IEEE 754标准,我们在计算后会丢失数据精度。

如何在电子商务应用程序中完成客户端计算?保持精确度

3 个答案:

答案 0 :(得分:3)

对于电子商务应用程序和财务计算,您应该使用一致的乘数来扩展十进制值,并将所有货币值表示为整数。这是为了避免带有浮点数学的nuances。在JavaScript中,我们只有数值的浮点数据类型,但幸运的是,在浮点数据类型下的整数数学是精确的。因此,将货币值转换为整数(例如,2550美分而不是25.50美元)可以解决问题。

答案 1 :(得分:0)

我在我的项目中这样做。您可以使用.toFixed()

let price = 0.7; // $
let discountPrice = 0.6; // $

let netPrice = (price - discountPrice).toFixed(1);

console.log(netPrice); // correct answer

另请在此处查看我的答案:https://stackoverflow.com/a/50056569/631803

Math.round()无法正常使用,请使用.toFixed()

答案 2 :(得分:0)

我有2条建议:

1。使用toPrecision()函数截断浮点数

如果您不想对代码进行大的更改,可以尝试以下功能:

function truncate(number) {
    return (parseFloat(number).toPrecision(2));
}

2。始终使用最小的资金单位进行电子商务计算

E.g。 0.7美元= 70美分,0.6美元= 60美分

所以,0.7美元 - 0.6美元= 70美分 - 60美分= 10美分。 //会给你精确的价值