亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

解決JS中乘法的浮點錯誤的方法

2019-11-20 21:19:36
字體:
來源:轉載
供稿:網友

JS里做小數的乘法運算時會出現浮點錯誤,具體可以測試一下: 

<script>
alert(11*22.9)
</script>

結果是251.89999999999998 而不是251.9 

這個問題想必有很多人為之頭痛。那么如何解決呢?在此給出解決辦法。

1、

復制代碼 代碼如下:

<script>
alert(11*(22.9*10)/10);
</script> 
 
解決問題的大概思路就是,先把因數放大為整數,最后再除以相應的倍數,這樣就能得到正確的結果了。 
2、
復制代碼 代碼如下:

<script defer>
Number.prototype.rate=function(){ 
var oStr=this.toString();
if(oStr.indexOf(".")==-1) 
return 1;
else
return Math.pow(10,parseInt(oStr.length-oStr.indexOf(".")-1));
}

function tran(){
args=tran.arguments;
var temp=1;
for(i=0;i<args.length;i++)
temp*=args[ i ]*args[ i ].rate();
for(i=0;i<args.length;i++) 
temp/=args[ i ].rate();
return temp
}

alert(tran(11,22.9));

</script>


該解決辦法是比較麻煩的辦法,但是卻能讓你大概了解解決這個問題的實際過程。

也可以用四舍五入的方法,  js中可以使用Math.round實現整數的四舍五入,如果需要實現精確到小數點多少位則需要編寫函數了。

復制代碼 代碼如下:

function ForDight(Dight,How) {
   Dight = Math.round(Dight*Math.pow(10,How))/Math.pow(10,How);
   return Dight;
}  

//除法函數,用來得到精確的除法結果
//說明:javascript的除法結果會有誤差,在兩個浮點數相除的時候會比較明顯。這個函數返回較為 精確的除法結果。
//調用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精確結果
function accDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
try{t1=arg1.toString().split(".")[1].length}catch(e){}
try{t2=arg2.toString().split(".")[1].length}catch(e){}
with(Math){
r1=Number(arg1.toString().replace(".",""))
r2=Number(arg2.toString().replace(".",""))
return (r1/r2)*pow(10,t2-t1);
}
}

//給Number類型增加一個div方法,調用起來更加 方便。
Number.prototype.div = function (arg){
return accDiv(this, arg);
}

//乘法函數,用來得到精確的乘法結果
//說明:javascript的乘法結果會有誤差,在兩個浮點數 相乘的時候會比較明顯。這個函數返回較為精確的乘法結果。
//調用:accMul(arg1,arg2)
//返回值:arg1乘以 arg2的精確結果
function accMul(arg1,arg2)
{
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}

// 給Number類型增加一個mul方法,調用起來更加方便。
Number.prototype.mul = function (arg){
return accMul(arg, this);
}

//加法函數,用來得到精確的加法結果
//說明:javascript的加法 結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的加法結果。
//調用:accAdd(arg1,arg2)
// 返回值:arg1加上arg2的精確結果
function accAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (arg1*m+arg2*m)/m
}

//給Number類型增加一個add方法,調用起來更加方便。
Number.prototype.add = function (arg){
return accAdd(arg,this);
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美极品少妇xxxxⅹ裸体艺术| 欧美国产精品人人做人人爱| 久久久久久久久久婷婷| 国产福利视频一区二区| 日韩欧美成人精品| 一区二区国产精品视频| 国产精品一区电影| 日韩在线视频二区| 日韩免费在线免费观看| 久久亚洲精品毛片| 色综合久综合久久综合久鬼88| 日韩精品在线影院| 国产欧美久久久久久| 欧美性生活大片免费观看网址| 亚洲精品一区中文字幕乱码| 亚洲免费视频一区二区| 国产99久久精品一区二区永久免费| 欧美精品18videos性欧美| 国产综合在线看| 欧美亚洲日本网站| 国产成人亚洲综合| 91成品人片a无限观看| 555www成人网| 国产精品欧美一区二区| 国自在线精品视频| 高清一区二区三区四区五区| 国产精品久久不能| 久热99视频在线观看| 亚洲电影免费观看高清完整版| 国产成人精品综合久久久| 538国产精品一区二区在线| 日本不卡视频在线播放| 久久久精品国产| 亚洲专区中文字幕| 性欧美暴力猛交69hd| 热门国产精品亚洲第一区在线| 欧美一级在线亚洲天堂| 亚洲欧美国产视频| 亚洲经典中文字幕| 国产日产久久高清欧美一区| 91在线网站视频| 国产精品电影观看| 俺也去精品视频在线观看| 亚洲国产精品成人va在线观看| 欧美一级片一区| 亚洲欧洲中文天堂| 97国产一区二区精品久久呦| 欧美激情2020午夜免费观看| 97视频在线观看成人| 欧美激情免费视频| 亚洲第一黄色网| 亚洲欧美精品中文字幕在线| 日韩中文字幕国产精品| 久久久久久久久久久亚洲| 亚洲变态欧美另类捆绑| 欧美日韩激情小视频| 91色视频在线观看| 亚洲精品aⅴ中文字幕乱码| 亚洲第一精品久久忘忧草社区| 91精品国产精品| 欧美日韩午夜剧场| 全球成人中文在线| 成人黄色免费片| 久久91亚洲人成电影网站| 国产热re99久久6国产精品| 亚洲欧美日韩久久久久久| 91亚洲永久免费精品| 亚洲欧美日韩中文在线制服| 亚洲欧美日韩国产中文| 久久久女女女女999久久| 69视频在线免费观看| 亚洲乱亚洲乱妇无码| 日韩中文综合网| 欧美成年人视频网站欧美| 国产精品美女网站| 亚洲永久免费观看| 欧美一级片免费在线| 亚洲欧美国产精品va在线观看| 国产精品美女主播| 欧美—级a级欧美特级ar全黄| 亚洲精品久久久久久下一站| 亚洲丁香婷深爱综合| 亚洲aⅴ日韩av电影在线观看| 亚洲自拍小视频免费观看| 国产精品一区二区久久久| 欧美理论电影网| 久久国产精品视频| 最新国产精品拍自在线播放| xxx一区二区| 欧美成人精品在线视频| 美女av一区二区三区| 亚洲欧美精品伊人久久| 欧美日韩一二三四五区| 久热在线中文字幕色999舞| 欧美肥老太性生活视频| 国产午夜精品视频免费不卡69堂| 国产精品自产拍高潮在线观看| 精品亚洲一区二区| 精品一区二区三区三区| 亚洲va码欧洲m码| 久久久中精品2020中文| 久久99精品视频一区97| 国产成一区二区| 97视频在线观看播放| 欧美激情二区三区| 国产亚洲一区二区在线| 欧美激情精品久久久久久蜜臀| 4438全国亚洲精品在线观看视频| 在线观看国产成人av片| 国产一区二区三区直播精品电影| 国产激情久久久久| 国产精品久久久久久亚洲影视| 国产成人亚洲综合青青| 国产精品www色诱视频| 亚洲精品丝袜日韩| 国产999在线| 欧美一级免费视频| 国产精品美乳一区二区免费| 中文字幕日本欧美| 国产伦精品免费视频| 亚洲久久久久久久久久| 在线亚洲欧美视频| 91精品国产综合久久久久久蜜臀| 伊人久久综合97精品| 日韩免费看的电影电视剧大全| 国产欧美一区二区三区视频| 久久久久久久久久亚洲| 久久亚洲国产成人| 国产精品欧美亚洲777777| 欧美福利视频在线| 国产中文欧美精品| 欧美电影院免费观看| 精品久久久久久亚洲国产300| 日韩av中文字幕在线| 91热福利电影| 久久成人亚洲精品| 青草青草久热精品视频在线观看| 91po在线观看91精品国产性色| zzijzzij亚洲日本成熟少妇| 91影院在线免费观看视频| 久久av资源网站| 中文字幕亚洲欧美| 26uuu久久噜噜噜噜| 成人免费淫片视频软件| 68精品久久久久久欧美| 欧美另类暴力丝袜| 日韩在线播放一区| 日韩在线视频线视频免费网站| 久久成人18免费网站| 久久福利视频导航| 51色欧美片视频在线观看| 精品人伦一区二区三区蜜桃网站| 俺去了亚洲欧美日韩| 国产精品久久婷婷六月丁香| 欧美亚洲成人精品| 日本老师69xxx| 日韩毛片在线观看| 成人免费视频a| 久久深夜福利免费观看| www.99久久热国产日韩欧美.com| 国产日本欧美视频| 国产成人jvid在线播放| 久久视频免费在线播放| 国产一区二区黑人欧美xxxx|