在Javascript中,对于货币来说,是toFixed()足够精确

In Javascript, is toFixed() accurate enough for currency?

本文关键字:toFixed 货币 Javascript 于货币      更新时间:2023-09-26

我正在创建一个用于计算订单总额的脚本。有些变量会改变价格,因此会出现一些长数字小数。

toFixed()是否足够精确,可以对这些数字进行四舍五入并始终得到相同的结果?

编辑:我想出的解决方案是使用这个:

Number.prototype.toCurrency = function(){
    return Math.round(this*100)/100;
}

这足以保持一致性吗?

您不应该为此使用toFixed,因为它不能在浏览器之间一致工作。

Javascript中的所有数字都是双精度浮点数字。浮点数字根据定义是不精确的,因此数字表示本身不够精确,无法总是得到精确的结果。

如果你想在Javascript中得到一个可预测的结果,你必须记住数字的精度限制,这样你就总是有足够大的裕度来正确地舍入数字。