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 相关文章推荐
Mootools 1.2教程 正则表达式
Sep 15 Javascript
javascript中的变量作用域以及变量提升详细介绍
Oct 24 Javascript
jquery prop的使用介绍及与attr的区别
Dec 19 Javascript
js表头排序实现方法
Jan 16 Javascript
javascript中函数作为参数调用的方法
Feb 09 Javascript
深入浅出理解javaScript原型链
May 09 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
Oct 03 Javascript
理解JavaScript原型链
Oct 25 Javascript
微信小程序 生命周期函数详解
May 24 Javascript
jQuery回调方法使用示例
Jun 26 jQuery
layui数据表格跨行自动合并的例子
Sep 02 Javascript
解决vue项目router切换太慢问题
Jul 19 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
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
使用python存储网页上的图片实例
2018/05/22 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
transform python环境快速配置方法
2018/09/27 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
《乡下孩子》教学反思
2014/04/17 职场文书
中班幼儿评语大全
2014/04/30 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
奖励申请报告范文
2015/05/15 职场文书
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python