因为计算机处理浮点数的方式, Float 计算本来就不是精确的, 你要不显示那个1, 把结果格式化一下好了 :http://www.mredkj.com/javascript/numberFormat.html另外, 浮点数的比较也有这个问题, 也就是不要用 if (a==b) ..., 而是 if ( abs(a-b)<很小的数值 ) 这样的形式, 那个很小的数值看你的需要, 取0.000000001或...

解决方案 »

  1.   

    楼上说得很艰,现我给你一个截取保留几位小数点的函数
    <script language=JavaScript>
    function tofloat(f,dec) { 
    if(dec<0) return "Error:dec<0!"; 
    result=parseInt(f)+(dec==0?"":"."); 
    f-=parseInt(f); 
    if(f==0) 
    for(i=0;i<dec;i++) result+='0'; 
    else { 
    for(i=0;i<dec;i++) f*=10; 
    result+=parseInt(Math.round(f)); 

    return result; 

    alert(tofloat(11.20000000000000000001,5))
    </script>
      

  2.   

    以前结果qswhMul,qswhDiv,现在写qswhAdd,估计又要写qswhSub了,呵呵<script>
    SA49 = parseFloat(1111111.55);
    SA52 = parseFloat(11111111.55);
    alert(qswhAdd(SA49,SA52))
    function qswhAdd(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>
      

  3.   

    to:meizz(梅花雨)如果我调用函数传递一个负数进去就有问题。如:alert(tofloat(-11.20000000000000000001,5))会得到一个 -11.-200000 的怪值!!!!!!!!!!