to:yzwxjun(蝼蚁飞舞)
这样说话不好to:楼主
我也遇到过这样的问题,后来还是自己写的函数转换了一下
可能是js中double的问题

解决方案 »

  1.   

    运算精度问题alert((0.9+0.3).toLocaleString());
      

  2.   

    js中确实存在这样的精度问题解决办法如下:<script>
    function add(n1,n2){
    var r1,r2,m;
    try{r1=n1.toString().split(".")[1].length}catch(e){r1=0}
    try{r2=n2.toString().split(".")[1].length}catch(e){r2=0}
    m=Math.pow(10,Math.max(r1,r2))
    return (n1*m+n2*m)/m
    }
    </script>
    <input id=f1><input id=f2>
    <input type=button value=add onclick="alert(add(f1.value,f2.value))">
      

  3.   

    alert((1.9+0.3).toLocaleString());你的是1.9啊
      

  4.   

    转csdn兄弟们的:
    //除法函数,用来得到精确的除法结果
    //说明: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);
    }
    }//给Number类型增加一个div方法,调用起来更加方便。
    Number.prototype.div = function (arg){
    return accDiv(this, arg);
    }//乘法函数,用来得到精确的乘法结果
    //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
    //调用:accMul(arg1,arg2)
    //返回值:arg1乘以arg2的精确结果
    function accMul(arg1,arg2)
    {
    arg1=String(arg1);var i=arg1.length-arg1.indexOf(".")-1;i=(i>=arg1.length)?0:i
    arg2=String(arg2);var j=arg2.length-arg2.indexOf(".")-1;j=(j>=arg2.length)?0:j
    return arg1.replace(".","")*arg2.replace(".","")/Math.pow(10,i+j)
    }//给Number类型增加一个mul方法,调用起来更加方便。
    Number.prototype.mul = function (arg){
    return accMul(arg, this);
    }//加法函数,用来得到精确的加法结果
    //说明: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
    }//给Number类型增加一个add方法,调用起来更加方便。
    Number.prototype.add = function (arg){
    return accAdd(arg,this);
    }