关于JS前台计算四舍五入的问题
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 35 36 37 38 39 40 41 42 43 44 45 46 47 | //除法函数 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。 //调用:accDiv(arg1,arg2) //返回值:arg1除以arg2的精确结果 AccDiv = function (arg1, arg2) { var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toString().split( "." )[1].length } catch (e) { } try { t2 = arg2.toString().split( "." )[1].length } catch (e) { } with (Math) { r1 = Number(arg1.toString().replace( "." , "" )) r2 = Number(arg2.toString().replace( "." , "" )) return (r1 / r2) * pow(10, t2 - t1); } } //乘法函数 //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 //调用:accMul(arg1,arg2) //返回值:arg1乘以arg2的精确结果 AccMul= function (arg1,arg2){ var m=0,s1=arg1.toString(),s2=arg2.toString(); try {m+=s1.split( "." )[1].length} catch (e){} try {m+=s2.split( "." )[1].length} catch (e){} return Number(s1.replace( "." , "" ))*Number(s2.replace( "." , "" ))/Math.pow(10,m) } //加法函数 //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确结果 AccAdd= function (arg1,arg2){ var r1,r2,m; try {r1=arg1.toString().split( "." )[1].length} catch (e){r1=0} try {r2=arg2.toString().split( "." )[1].length} catch (e){r2=0} m=Math.pow(10,Math.max(r1,r2)) return (arg1*m+arg2*m)/m } //减法函数 AccSub = function (arg1, arg2) { var r1, r2, m, n; try { r1 = arg1.toString().split( "." )[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split( "." )[1].length } catch (e) { r2 = 0 } m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度 n = (r1 >= r2) ? r1 : r2; return ((arg1 * m - arg2 * m) / m).toFixed(n); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统