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 相关文章推荐
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
jQuery原生的动画效果
Jul 10 Javascript
jQuery表格插件datatables用法详解
Nov 23 Javascript
EasyUI 结合JS导出Excel文件的实现方法
Nov 10 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
Feb 13 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
Jun 04 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
Dec 08 Javascript
解决iView中时间控件选择的时间总是少一天的问题
Mar 15 Javascript
微信小程序表单验证form提交错误提示效果
Jun 19 Javascript
利用JavaScript的Map提升性能的方法详解
Aug 14 Javascript
Vue filter 过滤当前时间 实现实时更新效果
Dec 20 Javascript
Moment的feature导致线上bug解决分析
Sep 23 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中的
2016/04/23 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
js Math 对象的方法
2013/09/01 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
Python实现的连接mssql数据库操作示例
2018/08/17 Python
python检测IP地址变化并触发事件
2018/12/26 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
python 图像增强算法实现详解
2021/01/24 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
同学聚会老师邀请函
2014/01/28 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
业务总经理岗位职责
2014/02/03 职场文书
表演方阵解说词
2014/02/08 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
迟到检讨书范文
2015/01/27 职场文书
环保建议书范文
2015/09/14 职场文书
《将心比心》教学反思
2016/02/23 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL