<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,2))
</script>

解决方案 »

  1.   

    toFixed(2)有版本限制,最好不要用
      

  2.   

    这个函数好像有问题
    alert(tofloat(0.02018,2))
      

  3.   

    xx=0.02018
    alert(Math.round(parseFloat(xx)*100)/100)
      

  4.   

    xx=0.02018
    如果是保留3位小數
    alert(Math.round(parseFloat(xx)*1000)/1000)
    四位
    alert(Math.round(parseFloat(xx)*10000)/10000)
    以此類推
      

  5.   

    function FormatNumber(srcStr,nAfterDot)
    {
      var srcStr,nAfterDot;
      var resultStr,nTen;
      srcStr = ""+srcStr+"";
      strLen = srcStr.length;
      dotPos = srcStr.indexOf(".",0);
      if (dotPos == -1){
        resultStr = srcStr+".";
        for (i=0;i<nAfterDot;i++){
          resultStr = resultStr+"0";
        }
        return resultStr;
      }
      else{
        if ((strLen - dotPos - 1) >= nAfterDot){
          nAfter = dotPos + nAfterDot + 1;
          nTen =1;
          for(j=0;j<nAfterDot;j++){
            nTen = nTen*10;
          }
          resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
          return resultStr;
        }
        else{
          resultStr = srcStr;
          for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
            resultStr = resultStr+"0";
          }
          return resultStr;
        }
      }