/**
* JavaScript 自带的 toFixed 方法有时候会出现计算不准确的问题
* 例如1.335toFixed(2) = 1.33, 但是实际应用中我们希望得到 1.335toFixed(2) = 1.34
* 重写Number原型对象上的toFixed方法
* 重写之后 1.335toFixed(2) = 1.34
*/
// rewrite toFixed function
Number.prototype.toFixed = function(len = 0) {
const origin = this
let target = null
if (origin > 0) {
target = (parseInt(origin * Math.pow(10, len) + 0.5) / Math.pow(10, len)).toString()
} else {
target = (parseInt(origin * Math.pow(10, len) - 0.5) / Math.pow(10, len)).toString()
}
let dotIndex = target.indexOf('.')
if (dotIndex < 0 && len > 0) {
target = target + '.'
for (let i = 0; i < len; i++) {
target = target + '0'
}
} else {
dotIndex = target.length - dotIndex
for (let i = 0; i < (len - dotIndex) + 1; i++) {
target = target + '0'
}
}
return target
}
解决JavaScript中 toFixed方法的bug
最新推荐文章于 2024-04-20 05:06:09 发布