js 加减乘除计算 (防止精度丢失)
2020-01-14 21:18
806 查看
// 两个浮点数求和 function accAdd(num1,num2){ var r1,r2,m; try{ r1 = num1.toString().split('.')[1].length; }catch(e){ r1 = 0; } try{ r2=num2.toString().split(".")[1].length; }catch(e){ r2=0; } m=Math.pow(10,Math.max(r1,r2)); // return (num1*m+num2*m)/m; return Math.round(num1*m+num2*m)/m; } // 两个浮点数相减 function accSub(num1,num2){ var r1,r2,m; try{ r1 = num1.toString().split('.')[1].length; }catch(e){ r1 = 0; } try{ r2=num2.toString().split(".")[1].length; }catch(e){ r2=0; } m=Math.pow(10,Math.max(r1,r2)); n=(r1>=r2)?r1:r2; return (Math.round(num1*m-num2*m)/m).toFixed(n); } // 两个浮点数相除 function accDiv(num1,num2){ var t1,t2,r1,r2; try{ t1 = num1.toString().split('.')[1].length; }catch(e){ t1 = 0; } try{ t2=num2.toString().split(".")[1].length; }catch(e){ t2=0; } r1=Number(num1.toString().replace(".","")); r2=Number(num2.toString().replace(".","")); return (r1/r2)*Math.pow(10,t2-t1); } // 两个浮点数相乘 function accMul(num1,num2){ var m=0,s1=num1.toString(),s2=num2.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); }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 如何在js中精确除法计算并保留两位小数(不丢失精度)java针对于BigDecimal类型
- js加减乘除丢失精度问题解决方法
- js加减乘除丢失精度问题
- js加减乘除丢失精度问题解决方法
- js 自定义加减乘除方法(防止js自身计算错误)
- js加减乘除丢失精度问题解决方法 你试一下12*1.3就知道了
- js加减乘除丢失精度问题解决方法
- JS的浮点数计算精度丢失问题解决方案
- Js计算,精度丢失处理
- js加减乘除丢失精度
- JS小数运算丢失精度计算错误等解决方案
- js 自定义加减乘除方法(防止js自身计算错误)
- js数值计算的处理,防止精度误差
- js中小数运算精度丢失问题
- [JS] js数字位数太大导致参数精度丢失问题
- JS 浮点数运算丢失精度解决方案
- float类型进行计算精度丢失的问题
- JS 浮点运算精度解决办法 (把小数转换为整数进行计算【但是不能超过js的整数上限】)
- js中数字计算精度(经测试,比较好)
- JS浮点类型运算精度丢失问题解决办法