js toFixed()方法的重寫實(shí)現(xiàn)精度的統(tǒng)一
更新時(shí)間:2014年03月06日 11:25:24 作者:
凡用過js 中的toFix() 方法的, 應(yīng)該都知道這個(gè)方法存在一個(gè)小小的BUG,在IE 下和FF 下對于小數(shù)的進(jìn)位有點(diǎn)不同
但凡用過js 中的toFix() 方法的, 應(yīng)該都知道這個(gè)方法存在一個(gè)小小的BUG。
在IE 下和FF 下對于小數(shù)的進(jìn)位有點(diǎn)不同。
例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01.
這樣就會(huì)造成數(shù)據(jù)的差異。
我們可以通過 重寫 這個(gè)方法來實(shí)現(xiàn)精度的統(tǒng)一。
Number.prototype.toFixed = function(s)
{
return (parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
}
但是這樣做仍然有一個(gè)問題, 在所有的瀏覽器下, String("0.050").toFix(2)=0.1
我們可以看到這樣你原本要保留兩位小數(shù)卻變成了一位。 也就是說。這個(gè)重寫只有的toFixed() 會(huì)自動(dòng)舍棄最后的0.
我們需要對這個(gè)方法做進(jìn)一步的處理。
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;
}
在IE 下和FF 下對于小數(shù)的進(jìn)位有點(diǎn)不同。
例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01.
這樣就會(huì)造成數(shù)據(jù)的差異。
我們可以通過 重寫 這個(gè)方法來實(shí)現(xiàn)精度的統(tǒng)一。
復(fù)制代碼 代碼如下:
Number.prototype.toFixed = function(s)
{
return (parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
}
但是這樣做仍然有一個(gè)問題, 在所有的瀏覽器下, String("0.050").toFix(2)=0.1
我們可以看到這樣你原本要保留兩位小數(shù)卻變成了一位。 也就是說。這個(gè)重寫只有的toFixed() 會(huì)自動(dòng)舍棄最后的0.
我們需要對這個(gè)方法做進(jìn)一步的處理。
復(fù)制代碼 代碼如下:
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;
}
相關(guān)文章
使用變量動(dòng)態(tài)設(shè)置js的屬性名
js的屬性名可以使用變量,例如js對象object,當(dāng)賦給該對象屬性的時(shí)候可以采用以下方式,比較實(shí)用,需要的朋友可以看看2014-10-10JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的刪除算法示例
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹的刪除算法,簡單分析了javascript刪除數(shù)據(jù)結(jié)構(gòu)中二叉樹節(jié)點(diǎn)時(shí)所遇到的各種情況與相關(guān)的處理原理與算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04JavaScript實(shí)現(xiàn)將數(shù)組中所有元素連接成一個(gè)字符串的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)將數(shù)組中所有元素連接成一個(gè)字符串的方法,涉及javascript中采用join方法進(jìn)行數(shù)組轉(zhuǎn)化的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04JavaScript如何實(shí)現(xiàn)組合列表框中元素移動(dòng)效果
在頁面中有兩個(gè)列表框,需要把其中一個(gè)列表框的元素移動(dòng)到另一個(gè)列表框,怎么實(shí)現(xiàn)此功能呢,下面通過本文給大家介紹JavaScript如何實(shí)現(xiàn)組合列表框中元素移動(dòng)效果,感興趣的朋友一起學(xué)習(xí)吧2016-03-03探索Emberjs制作一個(gè)簡單的Todo應(yīng)用
使用Emberjs制作一個(gè)簡單的Todo應(yīng)用,需要的朋友可以參考下2012-11-11微信小程序?qū)崿F(xiàn)輪播圖(適配機(jī)型)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)輪播圖,適配機(jī)型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06