首頁  >  文章  >  web前端  >  js toFixed()方法的重寫實作精確度的統一_javascript技巧

js toFixed()方法的重寫實作精確度的統一_javascript技巧

WBOY
WBOY原創
2016-05-16 16:56:442849瀏覽

但凡用過js 中的toFix() 方法的, 應該都知道這個方法存在一個小小的BUG。
在IE 下和FF 下對於小數的進位有點不同。
例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01.
這樣就會造成數據的差異。
我們可以透過 重寫 這個方法來實現精確度的統一。

複製程式碼 程式碼如下:

Number.prototype.toFixed = functionFixed >{
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 = functionFixed >{
changenum=(parseInt(this * Math.pow( 10, s ) 0.5)/ Math.pow( 10, s )).toString();
index=changenum.indexOf(".") ;
if(index0){
changenum=changenum ".";
for(i=0;ichangenum=changenum "0";
}

}else {
index=changenum.length-index;
for(i=0;ichangenum=changenum "0";
}

}

return changenum;
}

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn