在进行算数运算的时候,可能会出现精度问题,当然这个问题在各个语言中都有,但是多数语言都进行了封装,也可以说那些语言不存在这个问题,但是javascript在这个方面就没有如此体贴,所以需要程序员自行处理,下面就是能够实现此功能的相应的代码。

一.算数加运算:
   [ 其他 ] 运行代码    下载代码
<script>
function numAdd(num1,num2){ 
  var baseNum,baseNum1,baseNum2; 
  try{baseNum1=num1.toString().split(".")[1].length;} 
  catch(e){baseNum1 = 0;} 
  try{baseNum2 = num2.toString().split(".")[1].length;} 
  catch(e){baseNum2 = 0;} 
  baseNum = Math.pow(10, Math.max(baseNum1, baseNum2)); 
  return (num1 * baseNum + num2 * baseNum) / baseNum; 
};
</script>
以上代码可以消除加运算的精度问题。

二.算数减运算:
   [ 其他 ] 运行代码    下载代码
<script>
function numSub(num1,num2){ 
  var baseNum,baseNum1,baseNum2; 
  var precision;
  try{baseNum1=num1.toString().split(".")[1].length;} 
  catch(e){baseNum1=0;} 
  try{baseNum2=num2.toString().split(".")[1].length;} 
  catch(e){baseNum2=0;} 
  baseNum=Math.pow(10, Math.max(baseNum1, baseNum2)); 
  precision=(baseNum1 >= baseNum2) ? baseNum1 : baseNum2; 
  return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision); 
};
</script>
以上代码可以消除减运算的精度问题。

三.算数乘运算:
   [ 其他 ] 运行代码    下载代码
<script>
function numMulti(num1,num2){ 
  var baseNum=0; 
  try{baseNum+= num1.toString().split(".")[1].length;} 
  catch(e){} 
  try{baseNum += num2.toString().split(".")[1].length;} 
  catch(e){} 
  return Number(num1.toString().replace(".",""))*Number(num2.toString().replace(".",""))/Math.pow(10,baseNum); 
};
</script>
以上代码可以消除乘法运算的精度问题。

四.算数除法运算:
   [ 其他 ] 运行代码    下载代码
<script>
function numDiv(num1,num2){ 
  var baseNum=0,baseNum2=0; 
  var baseNum3,baseNum4; 
  try{baseNum1=num1.toString().split(".")[1].length;} 
  catch(e){baseNum1=0;} 
  try{baseNum2=num2.toString().split(".")[1].length;} 
  catch(e){baseNum2=0;} 
  with(Math){ 
    baseNum3=Number(num1.toString().replace(".", "")); 
    baseNum4=Number(num2.toString().replace(".", "")); 
    return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1); 
  } 
};
</script>

代码描述:js算数精度。js算数精度问题解决方案源码实例



111 147



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到