萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> js toFixed()方法的重寫實現精度的統一

js toFixed()方法的重寫實現精度的統一

 凡用過js 中的toFix() 方法的, 應該都知道這個方法存在一個小小的BUG,在IE 下和FF 下對於小數的進位有點不同

但凡用過js 中的toFix() 方法的, 應該都知道這個方法存在一個小小的BUG。  在IE 下和FF 下對於小數的進位有點不同。  例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01.  這樣就會造成數據的差異。  我們可以通過 重寫 這個方法來實現精度的統一。   代碼如下: Number.prototype.toFixed = function(s)  {  return (parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();  }    但是這樣做仍然有一個問題, 在所有的浏覽器下, String("0.050").toFix(2)=0.1  我們可以看到這樣你原本要保留兩位小數卻變成了一位。 也就是說。這個重寫只有的toFixed() 會自動捨棄最後的0.  我們需要對這個方法做進一步的處理。   代碼如下: Number.prototype.toFixed = function(s)  {  changenum=(parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();  index=changenum.indexOf(".");  if(index<0&&s>0){  changenum=changenum+".";  for(i=0;i<s;i++){  changenum=changenum+"0";  }    }else {  index=changenum.length-index;  for(i=0;i<(s-index)+1;i++){  changenum=changenum+"0";  }    }    return changenum;  }   
copyright © 萬盛學電腦網 all rights reserved