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 相关文章推荐
javascript 写类方式之八
Jul 05 Javascript
点击下载链接 弹出页面实现代码
Oct 01 Javascript
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
Mar 03 Javascript
node.js中的path.isAbsolute方法使用说明
Dec 08 Javascript
transport.js和jquery冲突问题的解决方法
Feb 10 Javascript
JS生成某个范围的随机数【四种情况详解】
Apr 20 Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
JS正则表达式之非捕获分组用法实例分析
Dec 28 Javascript
微信小程序封装多张图片上传api代码实例
Dec 30 Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 19 Javascript
Webpack5正式发布,有哪些新特性
Oct 12 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实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
pdo中使用参数化查询sql
2011/08/11 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
PHP编写RESTful接口
2016/02/23 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
js获取提交的字符串的字节数
2009/02/09 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[01:11:02]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python 文件操作删除某行的实例
2017/09/04 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
pyspark 随机森林的实现
2020/04/24 Python
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
项目合作协议书
2014/04/16 职场文书
个人课题方案
2014/05/08 职场文书
农村门前三包责任书
2014/07/25 职场文书
借款协议书
2014/09/16 职场文书
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
《灰雀》教学反思
2016/02/19 职场文书
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python
Python中tqdm的使用和例子
2022/09/23 Python