当前位置:首页 > 日记 > 正文

js精确的加减乘除实例

js精确的加减乘除实例

实例如下:

(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精确的加减乘除实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关文章

Visual Studio 2013?XML??

Visual Studio 2013?XML??

电脑软件,Studio,Visual,XML,??Visual Studio 2013з??????XMLл???нXMLл????Щ???????Class?Visual Studio 2013???XMLл??XElementXMLDocument??XML?????Visual Sutdio 2013??1. ????е?????????Classesα?2. ??XML???磺<?xml version=…

Excel如何将日历Excel插入到日历步

Excel如何将日历Excel插入到日历步

步骤,日历,如何将,电脑软件,Excel,作为一种常用的办公软件Excel,得到推广和使用的世界;在Excel日历为可能对大多数不熟悉的用户,事实上,我们需要采取控制;插入函数实现的日历,那是怎么做的,萧边在这里告诉你。 用excel插入日历的一种方法 1、打…

win7系统32位和64位的区别有哪些及

win7系统32位和64位的区别有哪些及

系统,好用,区别,有哪些,电脑软件,win7系统32位和64位有什么区别呢?好用情况有怎样呢?其实很多实用win7系统的人都不知道32位和64位的区别在哪里,今天小编给大家说说win7系统32位和64位的区别。win7系统32位与64位的区别:第一点、设计初衷不同…

理解javascript async的用法

理解javascript async的用法

电脑软件,javascript,async,写在前面本文将要实现一个顺序读取文件的最优方法,实现方式从最古老的回调方式到目前的async,也会与大家分享下本人对于thunk库与co库的理解。实现的效果:顺序读取出a.txt与b.txt,将读出的内容拼接成为一个字符串。…

基于Git的常用撤销技巧与解决冲突

基于Git的常用撤销技巧与解决冲突

方法,推荐,解决冲突,常用,技巧,git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。git reset --hard HASH #返回到某个节点,不保留修改。git reset …

服务器只留下C盘管理员权限后,引来

服务器只留下C盘管理员权限后,引来

权限,服务器,只留下,电脑软件,在网上看了不少关于服务器安全的资料,今天把C盘其它一切权限都删了,只留了管理员,随之问题就来了,远程读取代码的功能不可用了花了好些时间才解决此问题,由于有些程序需要开启才能正常使用!一、系统没有开启FSO组件…

浅谈JavaScript中的apply/call/bin

浅谈JavaScript中的apply/call/bin

浅谈,电脑软件,JavaScript,apply,call,fun.apply(context,[argsArray])立即调用fun,同时将fun函数原来的this指向传入的新context对象,实现同一个方法在不同对象上重复使用。context:传入的对象,替代fun函数原来的this;argsArray:一个数组或者…

stormmedia是什么文件夹

stormmedia是什么文件夹

电脑软件,stormmedia,泓旭的笔记本电脑平时主要用来上网看电影,一天他在偶然间发现D盘里面有个stormmedia文件夹,打开看你们很多文件夹,而且名字很怪,泓旭开始以为是电脑中病毒,使用杀毒软件查杀发现stormmedia文件夹是正常的。但是删除stormmed…

PHP实现根据数组的值进行分组的方

PHP实现根据数组的值进行分组的方

方法,数组,电脑软件,PHP,本文实例讲述了PHP实现根据数组的值进行分组的方法。分享给大家供大家参考,具体如下:PHP根据数组的值分组,php array中没有自带这个函数但是很常用,今天写了出来记录一下。代码:$_array = array( array(1,11,'2016-0…

.NET适配器模式讲解

.NET适配器模式讲解

适配器模式,电脑软件,NET,适配器模式简介:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成…

如何在一个Word文档文件设置一个立

如何在一个Word文档文件设置一个立

文件,设置,文档,如何在,电脑软件,无需边印,它是打印机本身的功能,称为全振幅印刷。但并非所有的印刷机都有此功能。以下是你的小文件,关于word文件的设置没有边框打印,希望对你有所帮助。 没有边框打印的Word文件设置 1。如果打印机没有这个…

如何使用ps动作的录制和编辑

如何使用ps动作的录制和编辑

如何使用,编辑,动作,电脑软件,ps,在我们介绍使用PS构建动作处理图片的几个例子之前,本章我们将学习我们自己的记录操作,这将是ps动作应用程序中最吸引人的部分之一。结合批量命令,您可以根据您的想法快速编辑数千张图片。 ps动作的录制和编辑…