在许多情况下toFixed()
,javascript 数学中的浮点数会失败。
我找到了这个解决方案:
function toFixed(decimalPlaces) {
var factor = Math.pow(10, decimalPlaces || 0);
var v = (Math.round(Math.round(this * factor * 100) / 100) / factor).toString();
if (v.indexOf('.') >= 0) {
return v + factor.toString().substr(v.length - v.indexOf('.'));
}
return v + '.' + factor.toString().substr(1);
}
和这个:
function toFixed(num, fixed) {
var re = new RegExp('^-?\\d+(?:\.\\d{0,' + (fixed || -1) + '})?');
return num.toString().match(re)[0];
}
还有其他方法吗?我必须确定它在任何情况下都表现良好。在边缘情况下也是如此。
编辑: https ://github.com/MikeMcl/decimal.js @Tschallacka
Number.prototype.toFixed = function(fixed) {
x = new Decimal(Number(this));
return x.toFixed(fixed);
};