toFixed四舍五入不准确的解决方法
这阵在做财务相关的项目,有些金额都无限小数,这就需要四舍五入保留到分。之前一直用**toFixed(2),简单测试也没有发现什么问题。等到正式上线就有人反应有的账差个一两分。虽然钱不多,但做账就是要准确。经过对程序逐步分析,最后发现误差就是出现在这个toFixed()**,JS
自带的方法上。最后经过上网搜索找到了解决方法。据说问题是出现在四舍六入五凑偶(4以下舍去,6以上进位,5只有前面一位是偶数的时候才进位,奇数不进位)。所以要重写 Number.prototype.toFixed 方法解决四舍五入不准确的问题。
原文和代码出自js重写toFixed方法(兼容负数)Script,版权归原作者所有。下面是重写的代码。在调用toFixed()前,使用这个代码覆盖JS自带toFixed()方法即可。
1 | Number.prototype.toFixed = function(s) { |
本文是原创文章,采用CC BY-NC-ND 4.0协议,完整转载请注明来自微笑的陋室