js toFixed()方法的重寫實(shí)現(xiàn)精度的統(tǒng)一
更新時(shí)間:2014年03月06日 11:25:24 作者:
凡用過(guò)js 中的toFix() 方法的, 應(yīng)該都知道這個(gè)方法存在一個(gè)小小的BUG,在IE 下和FF 下對(duì)于小數(shù)的進(jìn)位有點(diǎn)不同
但凡用過(guò)js 中的toFix() 方法的, 應(yīng)該都知道這個(gè)方法存在一個(gè)小小的BUG。
在IE 下和FF 下對(duì)于小數(shù)的進(jìn)位有點(diǎn)不同。
例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01.
這樣就會(huì)造成數(shù)據(jù)的差異。
我們可以通過(guò) 重寫 這個(gè)方法來(lái)實(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ù)卻變成了一位。 也就是說(shuō)。這個(gè)重寫只有的toFixed() 會(huì)自動(dòng)舍棄最后的0.
我們需要對(duì)這個(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 下對(duì)于小數(shù)的進(jìn)位有點(diǎn)不同。
例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01.
這樣就會(huì)造成數(shù)據(jù)的差異。
我們可以通過(guò) 重寫 這個(gè)方法來(lái)實(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ù)卻變成了一位。 也就是說(shuō)。這個(gè)重寫只有的toFixed() 會(huì)自動(dòng)舍棄最后的0.
我們需要對(duì)這個(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)文章
layui 選擇列表,打勾,點(diǎn)擊確定返回?cái)?shù)據(jù)的例子
今天小編就為大家分享一篇layui 選擇列表,打勾,點(diǎn)擊確定返回?cái)?shù)據(jù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
動(dòng)態(tài)的創(chuàng)建一個(gè)元素createElement及刪除一個(gè)元素
本文用示例為大家介紹下動(dòng)態(tài)創(chuàng)建一個(gè)元素createElement及刪除一個(gè)元素,感興趣的朋友可以參考下2014-01-01
淺談JS獲取元素的N種方法及其動(dòng)靜態(tài)討論
這篇文章主要介紹了淺談JS獲取元素的N種方法及其動(dòng)靜態(tài)討論,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-08-08
JS+CSS實(shí)現(xiàn)大氣的黑色首頁(yè)導(dǎo)航菜單效果代碼
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)大氣的黑色首頁(yè)導(dǎo)航菜單效果代碼,涉及JavaScript基于鼠標(biāo)事件實(shí)現(xiàn)頁(yè)面樣式動(dòng)態(tài)切換的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
Javascript類型系統(tǒng)之String字符串類型詳解
這篇文章主要介紹了Javascript類型系統(tǒng)之String字符串類型詳解的相關(guān)資料,需要的朋友可以參考下2016-06-06

