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

在Javascript中,toFixed()对于货币是否足够精确?,javascript,currency,rounding,tofixed,Javascript,Currency,Rounding,Tofixed,我正在创建一个用于计算订单总额的脚本。有些变量可能会改变价格,因此会出现一些长位小数 toFixed()是否足够精确,可以对这些数字进行四舍五入并始终得到相同的结果 编辑: 我提出的解决方案是使用以下方法: Number.prototype.toCurrency = function(){ return Math.round(this*100)/100; } 这就足以保证一致性了吗?您不应该使用toFixed来实现这一点,因为它在不同浏览器之间的工作不一致 Javascript中的所有

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

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

编辑: 我提出的解决方案是使用以下方法:

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

这就足以保证一致性了吗?

您不应该使用
toFixed
来实现这一点,因为它在不同浏览器之间的工作不一致

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


如果您想在Javascript中获得可预测的结果,您必须牢记数字的精度限制,以便始终有足够大的余量来正确地对数字进行四舍五入。

No!看看这个:
toFixed()
例程只提供了一个字符串表示。如果您使用JavaScript数字进行货币计算,您将遇到问题。基本问题是2和5是相对素数。请提供您的第一个声明的来源/参考(它在不同浏览器中不一致)。我不完全理解您的意思,您必须记住数字的精度限制,因此,您总是有足够大的余量,能够正确地对数字进行四舍五入。由于货币只使用2位小数,这难道不足够吗?@twiz:是的,这几乎可以为任何计算提供足够的保证金。