您好,欢迎访问一九零五行业门户网

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

复制代码 代码如下:
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。  
//调用:accadd(arg1,arg2)  
//返回值:arg1加上arg2的精确结果  
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 
}
复制代码 代码如下:
//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。  
//调用:accsub(arg1,arg2)  
//返回值:arg1减上arg2的精确结果  
function accsub(arg1,arg2){     
    return accadd(arg1,-arg2); 
}
复制代码 代码如下:
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。  
//调用:accmul(arg1,arg2)  
//返回值:arg1乘以arg2的精确结果  
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) 
}
复制代码 代码如下:
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。  
//调用:accdiv(arg1,arg2)  
//返回值:arg1除以arg2的精确结果  
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 (r1/r2)*pow(10,t2-t1); 
    } 
}
其它类似信息

推荐信息