尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

重写toFixed,完美解决原生js小数点问题

重写toFixed,完美解决原生js小数点问题 存在的问题 - 有些浏览器会存在这个问题(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不进位。
返回列表