要想没有误差,只有用字符串的形式转化整数来运算,用这个函数代替
<script language=javascript>
 function jjcc(v1,v2,n,typ){
/*
  v1 v2 是两个操作数
  n  是最大小数位数   一定要大于等于两个操作数的小数位数 否则会出异常
  也可以在这里把最大小数位数改为自动判断  
  type 是类型  'add' 加  'min' 减 'mul' 乘  
*/
 var s1=Number(v1.toFixed(n).replace(".",""));
 var s2=Number(v2.toFixed(n).replace(".",""));
 if(typ=='add'){
   var ret=String(s1+s2);
   return Number(ret.substring(0,ret.length-n)+"."
                          +ret.substring(ret.length-n));
 }else if(typ=='min'){
   var ret=String(s1-s2);
   return Number(ret.substring(0,ret.length-n)+"."
                         +ret.substring(ret.length-n));
 }else if(typ=='mul'){
   var ret=String(s1*s2);
   return Number(ret.substring(0,ret.length-2*n)+"."
                   +ret.substring(ret.length-2*n));
 }
 }
 alert(jjcc(1038.1,1000,1,"add")+" "+(1038.1+1000)+"\n"
           +jjcc(1038.1,1000,1,"min")+" "+(1038.1-1000)+"\n"
   +jjcc(1038.1,1000,1,"mul")+" "+(1038.1*1000));
</script>