jstoFixed()方法的重寫實現精度的統一_javascript技巧
來源:懂視網
責編:小采
時間:2020-11-27 21:20:36
jstoFixed()方法的重寫實現精度的統一_javascript技巧
jstoFixed()方法的重寫實現精度的統一_javascript技巧:但凡用過js 中的toFix() 方法的, 應該都知道這個方法存在一個小小的BUG。 在IE 下和FF 下對于小數的進位有點不同。 例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01. 這樣就會造成數據的差異。 我們可以通過 重寫 這個方法來實現精度的統一
導讀jstoFixed()方法的重寫實現精度的統一_javascript技巧:但凡用過js 中的toFix() 方法的, 應該都知道這個方法存在一個小小的BUG。 在IE 下和FF 下對于小數的進位有點不同。 例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01. 這樣就會造成數據的差異。 我們可以通過 重寫 這個方法來實現精度的統一

但凡用過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
changenum=changenum+"0";
} }else {
index=changenum.length-index;
for(i=0;i<(s-index)+1;i++){
changenum=changenum+"0";
}
}
return changenum;
}
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
jstoFixed()方法的重寫實現精度的統一_javascript技巧
jstoFixed()方法的重寫實現精度的統一_javascript技巧:但凡用過js 中的toFix() 方法的, 應該都知道這個方法存在一個小小的BUG。 在IE 下和FF 下對于小數的進位有點不同。 例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01. 這樣就會造成數據的差異。 我們可以通過 重寫 這個方法來實現精度的統一