分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

js中toFixed重写

发布时间:2023-09-06 01:42责任编辑:董明明关键词:js

在测试原生的toFixed发现,它在个浏览器上表现不一致,并且有些值在保留小数时得到的结果并不是想要,如在chrome下测试:

 所以针对toFixed方法不准的问题,我们进行方法改造:

主要思路是:对原始数值扩大一定倍数,然后再判断小数点后面的数字是否大于等于5(如果有小数点的话),然后再除以上一步的倍数,此时再看小数点的情况,如果小数点后面不满要保留的位数,可以补0。 此外,要考虑负数的情况,所以,这里会先将符号拿出来,再处理数值,最后处理完成后再把符号加上。

Number.prototype.toFixed = function (n){ ???n = n ? n : 0; ?//保留的小数位数 ???var num = this+""; ???var sign = ‘‘; ???//去符号 ???if(num.indexOf("-")>-1 || num.indexOf("+")>-1){ ???????sign = num.substr(0,1); ?//符号 ???????num = num.substr(1,num.length-1); ???} ???num = num*Math.pow(10,n)+‘‘; ???//小数点后面的数字是否大于等于5,是 进1 ???var i = num.indexOf("."); ???if(i>-1){ ???????if(num.substr(i+1,1)>=5){ ???????????num = 1+num*1; //转为数字运算 否则会进行字符串运算 ???????} ???} ???num = Math.floor(num); ???var result = sign+num / Math.pow(10,n); ???result +=‘‘+ new Array(n+1).join("0"); ?//位数不够的 补0 ???var dot_index = result.indexOf("."); ???var int_part = result.substr(0,dot_index); ???var dot_part = result.substr(dot_index+1,n); ???return int_part+"."+dot_part;}

js中toFixed重写

原文地址:https://www.cnblogs.com/lydialee/p/8446739.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved