控制小数的四舍五入,以及不足小数位数时,是否自动补零
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | /** * 把Number四舍五入为指定小数位数的数字字符串(解决原toFixed四舍五入问题) * @param {number} [len=0] 保留小数位数 * @param {boolean} [round=true] 是否四舍五入(默认进行四舍五入) * @param {boolean} [padding=true] 有效数字不足预设小数位数时是否后补0(默认后补)如:_toFixed(1.1,3,true,true) = "1.100" ; _toFixed(1.1,3,true,false) = "1.1" * @returns {string} * @example _toFixed(1.335,2); */ function _toFixed(num, len, round, padding) { num = Number(num); if (len < 0) { throw new RangeError( "digits argument must be between 0 and 100" ); } let numStr = String(num), //数字转字符串 pointIndex = numStr.indexOf( "." ), //小数点下标 preNumIndex = pointIndex + len + 1; //保留位后一位数字下标 if (numStr.includes( "e" ) || pointIndex === -1) { //遇到科学表示法或整数,直接返回原生toFixed处理结果 return num.toFixed(len); } let addZeroCount = len - (numStr.length - pointIndex - 1); //需补0的个数 if (addZeroCount > 0) { numStr += "0" .repeat(addZeroCount); //小数位不足后补0 } let numCut = Math.abs(numStr.substring(0, preNumIndex)); //截取保留位(含)前的所有字符 let res = (num < 0 ? "-" : "" ) + (round && numStr[preNumIndex] >= 5 ? numCut + 1 / Math.pow(10, len) : numCut ).toFixed(len); //判断预期小数位后一位是否大于等于5,是则进位 return padding ? res : String(Number(res)); } console.log(_toFixed(123.456, 2, false , true ), "是否四舍五入自我控制" ); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具