锁定老帖子 主题:你还在用toFixed来进行四舍五入么?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-24
QMax 写道 我们在使用的过程中发现还是会有一些问题,
比如55.555保留两位小数,可以变成55.56, 但是555.555,保留两位就变成555.55了 在IE7测试,使用toFixed确实如此。 |
|
返回顶楼 | |
发表时间:2009-12-11
调用过这段方法肯定没有问题,修复Number的toFixed方法,试试吧,原来的代码都不用改动。
Number.prototype.toFixed = function(d) { var s = this + ""; if (!d) d = 0; if (s.indexOf(".") == -1) s += "."; s += new Array(d + 1).join("0"); if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (d + 1) + "})?)\\d*$").test(s)) { var s = "0" + RegExp.$2, pm = RegExp.$1, a = RegExp.$3.length, b = true; if (a == d + 2) { a = s.match(/\d/g); if (parseInt(a[a.length - 1]) > 4) { for (var i = a.length - 2; i >= 0; i--) { a[i] = parseInt(a[i]) + 1; if (a[i] == 10) { a[i] = 0; b = i != 1; } else break; } } s = a.join("").replace(new RegExp("(\\d+)(\\d{" + d + "})\\d$"), "$1.$2"); } if (b) s = s.substr(1); return (pm + s).replace(/\.$/, ""); } return this + ""; }; |
|
返回顶楼 | |
发表时间:2009-12-25
parseFloat(parseFloat(-0.0015).toFixed(2)可以正确的得到0
为什么不采用这种方式呢? |
|
返回顶楼 | |