js toFixed 真正四舍五入
真正四舍五入
//toFixed兼容方法,四舍五入 Number.prototype.toFixed = function (len) { if (len > 20 || len < 0) { throw new RangeError('toFixed() digits argument must be between 0 and 20'); } // .123转为0.123 var number = Number(this); if (isNaN(number) || number >= Math.pow(10, 21)) { return number.toString(); } if (typeof (len) == 'undefined' || len == 0) { return (Math.round(number)).toString(); } var result = number.toString(), numberArr = result.split('.'); if (numberArr.length < 2) { //整数的情况 return padNum(result); } var intNum = numberArr[0], //整数部分 deciNum = numberArr[1],//小数部分 lastNum = deciNum.substr(len, 1);//最后一个数字 if (deciNum.length == len) { //需要截取的长度等于当前长度 return result; } if (deciNum.length < len) { //需要截取的长度大于当前长度 1.3.toFixed(2) return padNum(result) } //需要截取的长度小于当前长度,需要判断最后一位数字 result = intNum + '.' + deciNum.substr(0, len); if (parseInt(lastNum, 10) >= 5) { //最后一位数字大于5,要进位 var times = Math.pow(10, len); //需要放大的倍数 var changedInt = Number(result.replace('.', ''));//截取后转为整数 var fu = 1/changedInt < 0;// 为true 时,则 changedInt < 0 或者 changedInt = -0,否则为正数或等于0 if(fu){ changedInt--;//整数进位 }else{ changedInt++;//整数进位 } changedInt /= times;//整数转为小数,注:有可能还是整数 result = padNum(changedInt + ''); } return result; //对数字末尾加0 function padNum(num) { var dotPos = num.indexOf('.'); if (dotPos === -1) { //整数的情况 num += '.'; for (var i = 0; i < len; i++) { num += '0'; } return num; } else { //小数的情况 var need = len - (num.length - dotPos - 1); for (var j = 0; j < need; j++) { num += '0'; } return num; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现