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 相关文章推荐
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
json属性名为什么要双引号(个人猜测)
Jul 31 Javascript
JQuery中DOM加载与事件执行实例分析
Jun 13 Javascript
设置点击文本框或图片弹出日历控件的实现代码
May 12 Javascript
JavaScript的Vue.js库入门学习教程
May 23 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
Jun 03 Javascript
很实用的js选项卡切换效果
Aug 12 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
Jun 19 Javascript
vuejs简单验证码功能完整示例
Jan 08 Javascript
vue滚动固定顶部及修改样式的实例代码
May 30 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
JavaScript 反射学习技巧
Oct 16 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 快速生成 Flash 动画的方法
2007/03/06 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php自定文件保存session的方法
2014/12/10 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
python如何制作英文字典
2019/06/25 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
致跳高运动员加油稿
2014/02/12 职场文书
个人向公司借款协议书
2014/10/09 职场文书
2014年外联部工作总结
2014/11/17 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
英文自荐信范文
2015/03/25 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
利用js实现简单开关灯代码
2021/11/23 Javascript
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电