`

js浮点数精确计算函数(加,减,乘,除)

 
阅读更多
 //浮点数加法运算
  function FloatAdd(arg1,arg2){
    var r1,r2,m;
    try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
    try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
    m=Math.pow(10,Math.max(r1,r2))
    return (arg1*m+arg2*m)/m
   }

  //浮点数减法运算
  function FloatSub(arg1,arg2){
	 var r1,r2,m,n;
	 try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
	 try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
	 m=Math.pow(10,Math.max(r1,r2));
	 //动态控制精度长度
	 n=(r1>=r2)?r1:r2;
	 return ((arg1*m-arg2*m)/m).toFixed(n);
  }
  
  //浮点数乘法运算
  function FloatMul(arg1,arg2) 
  { 
   var m=0,s1=arg1.toString(),s2=arg2.toString(); 
   try{m+=s1.split(".")[1].length}catch(e){} 
   try{m+=s2.split(".")[1].length}catch(e){} 
   return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m) 
   } 


 //浮点数除法运算
 function FloatDiv(arg1,arg2){ 
	var t1=0,t2=0,r1,r2; 
	try{t1=arg1.toString().split(".")[1].length}catch(e){} 
	try{t2=arg2.toString().split(".")[1].length}catch(e){} 
	with(Math){ 
	r1=Number(arg1.toString().replace(".","")) 
	r2=Number(arg2.toString().replace(".","")) 
	return (r1/r2)*pow(10,t2-t1); 
	} 
 } 

分享到:
评论
1 楼 Foxswily 2011-03-10  
加法不完善某些情况还有错,行尾缺";"

被小孩拿来做项目,出了问题才查到是从这里copy的,赶紧留个言,别在随便拿去用了

相关推荐

    js浮点数精确计算(加、减、乘、除)

    代码如下:<SPAN xss=removed>//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确结果 ...

    javascript 除法、乘法、加法精确计算

    javascript的除法、乘法、加法结果会有误差,在两个浮点数相除的时候会比较明显。自定义几个函数返回较为精确的除法结果。

    浅析js中的浮点型运算问题

    //加法函数,用来得到精确的加法结果 //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确结果 ...

    js关于精确计算和数值格式化以及直接引js文件

    代码如下: (function () { var calc = { /* 函数,加法函数,用来得到精确的加法结果 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 参数:arg1:第一...

    js中Number数字数值运算后值不对的解决方法

    问题: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 ...//除法函数,用来得到精确的除法结果 //

    js计算精度问题小结

     //加法函数,用来得到精确的加法结果 //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确...

    程序员刷webpack题-what-you-have-an-npm-module-for-that:用常用词命名的npm模块列表

    精确计算(小数、浮点数计算)问题。支持数字、小数、字符串、数组、矩阵和表达式。 # 穿过 多线程 map() 函数的 Node.js 实现 # 行为 画布和 dom 的动画引擎 # 行动 # 积极的 酷、简单、快速的 NodeJS 网络框架...

    js中浮点型运算BUG的解决方法说明

    曾经项目用到过的,之前在网上找到此代码,但在特定条件下除法和加法运算依然会出现BUG个人对此稍作优化 代码如下://除法函数,用来得到精确的除法结果//说明:javascript的除法结果会有误差,在两个浮点数相除的...

    js数字计算 误差问题的快速解决方法

    //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确结果 function add(a,b){ var c, d, e; ...

    JavaScript笔记

    JavaScript:定义行为和动作 (基于对象和事件驱动的客户端脚本语言;也是一种广泛应用于客户端Web开发的脚本语言) 基于对象:网页中的一切元素都是假象!不需要new,即可直接使用 事件驱动:JavaScript的执行都是...

    正则表达式

    JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp...

Global site tag (gtag.js) - Google Analytics