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 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
使用JQuery和s3captche实现一个水果名字的验证
Aug 14 Javascript
jQuery学习笔记之DOM对象和jQuery对象
Dec 22 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
Jan 15 Javascript
jQuery实现用方向键控制层的上下左右移动
Jan 13 Javascript
快速解决FusionCharts联动的中文乱码问题
Dec 04 Javascript
jquery中EasyUI使用技巧小结
Feb 10 Javascript
jquery实现简单Tab切换菜单效果
Jul 17 Javascript
关于javascript的一些知识以及循环详解
Sep 12 Javascript
URL中“#” “?” &“”号的作用浅析
Feb 04 Javascript
浅谈键盘上回车按钮的js触发事件
Feb 13 Javascript
从vue源码看props的用法
Jan 09 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
屏蔽浏览器缓存另类方法
2006/10/09 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
python Django模板的使用方法
2016/01/14 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
python实现简易版计算器
2020/06/22 Python
python实现扫描ip地址的小程序
2019/04/16 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
手工社团活动方案
2014/02/17 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
大学军训感言1500字
2014/03/09 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
python单向链表实例详解
2022/05/25 Python