js精确的加减乘除实例


Posted in Javascript onNovember 14, 2017

实例如下:

(function () {
 var calc = {
  /*
  函数,加法函数,用来得到精确的加法结果 
  说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
  参数:arg1:第一个加数;arg2第二个加数;d要保留的小数位数(可以不传此参数,如果不传则不处理小数位数)
  调用:Calc.Add(arg1,arg2,d) 
  返回值:两数相加的结果
  */
  Add: function (arg1, arg2) {
   arg1 = arg1.toString(), arg2 = arg2.toString();
   var arg1Arr = arg1.split("."), arg2Arr = arg2.split("."), d1 = arg1Arr.length == 2 ? arg1Arr[1] : "", d2 = arg2Arr.length == 2 ? arg2Arr[1] : "";
   var maxLen = Math.max(d1.length, d2.length);
   var m = Math.pow(10, maxLen);
   var result = Number(((arg1 * m + arg2 * m) / m).toFixed(maxLen));
   var d = arguments[2];
   return typeof d === "number" ? Number((result).toFixed(d)) : result;
  },
  /*
  函数:减法函数,用来得到精确的减法结果 
  说明:函数返回较为精确的减法结果。 
  参数:arg1:第一个加数;arg2第二个加数;d要保留的小数位数(可以不传此参数,如果不传则不处理小数位数
  调用:Calc.Sub(arg1,arg2) 
  返回值:两数相减的结果
  */
  Sub: function (arg1, arg2) {
   return Calc.Add(arg1, -Number(arg2), arguments[2]);
  },
  /*
  函数:乘法函数,用来得到精确的乘法结果 
  说明:函数返回较为精确的乘法结果。 
  参数:arg1:第一个乘数;arg2第二个乘数;d要保留的小数位数(可以不传此参数,如果不传则不处理小数位数)
  调用:Calc.Mul(arg1,arg2) 
  返回值:两数相乘的结果
  */
  Mul: function (arg1, arg2) {
   var r1 = arg1.toString(), r2 = arg2.toString(), m, resultVal, d = arguments[2];
   m = (r1.split(".")[1] ? r1.split(".")[1].length : 0) + (r2.split(".")[1] ? r2.split(".")[1].length : 0);
   resultVal = Number(r1.replace(".", "")) * Number(r2.replace(".", "")) / Math.pow(10, m);
   return typeof d !== "number" ? Number(resultVal) : Number(resultVal.toFixed(parseInt(d)));
  },
  /*
  函数:除法函数,用来得到精确的除法结果 
  说明:函数返回较为精确的除法结果。 
  参数:arg1:除数;arg2被除数;d要保留的小数位数(可以不传此参数,如果不传则不处理小数位数)
  调用:Calc.Div(arg1,arg2) 
  返回值:arg1除于arg2的结果
  */
  Div: function (arg1, arg2) {
   var r1 = arg1.toString(), r2 = arg2.toString(), m, resultVal, d = arguments[2];
   m = (r2.split(".")[1] ? r2.split(".")[1].length : 0) - (r1.split(".")[1] ? r1.split(".")[1].length : 0);
   resultVal = Number(r1.replace(".", "")) / Number(r2.replace(".", "")) * Math.pow(10, m);
   return typeof d !== "number" ? Number(resultVal) : Number(resultVal.toFixed(parseInt(d)));
  }
 };
 window.Calc = calc;
}());

我已经测试过了 可以直接使用!

以上这篇js精确的加减乘除实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
去掉gridPanel表头全选框的小例子
Jul 18 Javascript
JS调用CS里的带参方法实例
Aug 01 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
Aug 03 Javascript
基于JavaScript实现瀑布流布局(二)
Jan 26 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
JavaScript实现图片瀑布流和底部刷新
Jan 02 Javascript
js实现文字向上轮播功能
Jan 13 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
Node.js模拟发起http请求从异步转同步的5种用法
Sep 26 Javascript
详解Node.js读写中文内容文件操作
Oct 10 Javascript
JavaScript setInterval()与setTimeout()计时器
Dec 27 Javascript
vue-simple-uploader上传成功之后的response获取代码
Sep 07 Javascript
JavaScript插件Tab选项卡效果
Nov 14 #Javascript
vue中如何创建多个ueditor实例教程
Nov 14 #Javascript
基于 Vue 实现一个酷炫的 menu插件
Nov 14 #Javascript
Node之简单的前后端交互(实例讲解)
Nov 14 #Javascript
Angular移动端页面input无法输入的解决方法
Nov 14 #Javascript
使用Vue-Router 2实现路由功能实例详解
Nov 14 #Javascript
JS 仿支付宝input文本输入框放大组件的实例
Nov 14 #Javascript
You might like
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
php正则表达式学习笔记
2015/11/13 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
python里大整数相乘相关技巧指南
2014/09/12 Python
Python中实现switch功能实例解析
2018/01/11 Python
python模块之paramiko实例代码
2018/01/31 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
python调用java的jar包方法
2018/12/15 Python
Python3中的bytes和str类型详解
2019/05/02 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
python中if及if-else如何使用
2020/06/02 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
内业资料员岗位职责
2014/01/04 职场文书
总经理岗位职责描述
2014/02/08 职场文书
服装促销活动方案
2014/02/23 职场文书
西游记读书笔记
2015/06/25 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
如何写好竞聘报告
2019/04/03 职场文书