
存在的问题 - 有些浏览器会存在这个问题(1.35).toFixed(1)//1.4(1.45).toFixed(1)//1.4(1.55).toFixed(1)//1.61.45应该返回的是1.5解决方案Number.prototype.toFixedfunction(decimal){letstrthis.toString()letstrArrstr.split(.)letdparseInt(decimal)// 参数为0和 非数字 if(!d){returnstrArr[0]}// 整数 if(str.indexOf(.)-1){returnstr .0.repeat(d)}// 小数位不够 if(strArr[1].lengthd){returnstr 0.repeat(d - strArr[1].length)}letnumstrArr[1].charAt(d)strArr[1]strArr[1].slice(0, d)// 有进位 if(num -50){letbitthis0?-1:1// 进位正数加1负数加-1letnNumber(strArr.join()) bit // 进位之后保留对应小数位letregnew RegExp((\\d{ d })$)returnn.toString().replace(reg,.$1)}returnstrArr.join(.)}原因并非单纯的四舍五入而是四舍六入五取偶的方法四舍当被修约的数字小于5时该数字舍去。六入当被修约的数字大于等于6时该数字舍去并向前进一位。五凑偶当被修约的数字为5时处理较为复杂如果5后还有不为“0”的任何数无论5的前面是奇数还是偶数均应进位。如果5后无有效数字则需看5前面的数字。若为奇数则向前进一位若为偶数包括0则直接舍去5不进位。