分类 Jquery 下的文章

javascript(js)小数精度丢失的解决方案 (无限小数问题)


原因:js按照2进制来处理小数的加减乘除,在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配,所以会出现如下情况.

javascript(js)的小数点加减乘除问题,是一个js的bug如0.3*1 = 0.2999999999等,下面列出可以完美求出相应精度的四种js算法

//除法
function accDiv(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 accMul((r1/r2),pow(10,t2-t1)); 
 }
}
//乘法
function accMul(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 accAdd(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 Subtr(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);  
}

非原创 来源于网络


Jquery - $.ajax


$.ajax({
url:"http://www.microsoft.com",    //请求的url地址
dataType:"json",   //返回格式为json
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
data:{"id":"value"},    //参数值
type:"GET",   //请求方式
beforeSend:function(){
    //请求前的处理
},
success:function(req){
    //请求成功时处理
},
complete:function(){
    //请求完成的处理
},
error:function(){
    //请求出错处理
}});