我正在创建一个用于计算订单总额的脚本。某些变量可能会改变价格,因此会出现一些长位小数。
toFixed()
是否足够精确以对这些数字进行舍入并始终得到相同的结果?
编辑: 我想出的解决方案就是使用它:
Number.prototype.toCurrency = function(){
return Math.round(this*100)/100;
}
这是否足以保持一致性?
答案 0 :(得分:2)
您不应该使用toFixed
,因为它不能在浏览器中保持一致。
Javascript中的所有数字都是双精度浮点数。根据定义,浮点数不精确,因此数字表示本身不够精确,无法始终得到精确的结果。
如果你想在Javascript中获得可预测的结果,你必须记住数字的精度限制,这样你总是有足够的余量才能正确地舍入数字。