javaScript中加减乘除不精确问题的解决方法 您所在的位置:网站首页 js中的加减乘除 javaScript中加减乘除不精确问题的解决方法

javaScript中加减乘除不精确问题的解决方法

#javaScript中加减乘除不精确问题的解决方法| 来源: 网络整理| 查看: 265

腾讯云实验平台开春福利,100+门实验限免体验,精品实验享8折优惠! >>>

javaScript 关于小数的四则混合运算时不准确的,所以自定义函数来实现准确的运算

//以下四个函数是算术运算得到精确方法 基本思想就是先将小数转化为整数进行运算,最后在转化回去 //除法函数,用来得到精确的除法结果 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。 //调用:accDiv(arg1,arg2) //返回值:arg1除以arg2的精确结果 function accDiv(arg1, arg2) {     return accMul(arg1, 1 / arg2); } //乘法函数,用来得到精确的乘法结果。 //原理:主要是通过将小数全部转化为整数进行运算,最后在依据小数的位数得到相应的小数结果 //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 //调用:accMul(arg1,arg2) //返回值:arg1乘以arg2的精确结果 function accMul(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的精确结果 function accAdd(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 (accMul(arg1, m) + accMul(arg2, m)) / m; } //减法函数,用来得到精确的减法结果 //说明:javascript的减法结果会有误差,在两个浮点数减法的时候会比较明显。这个函数返回较为精确的减法结果。 //调用:accSub(arg1,arg2) //返回值:arg1减法arg2的精确结果 function accSub(arg1, arg2) {     return accAdd(arg1, -arg2); }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有