天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JavaScript 浮點(diǎn)數(shù)運(yùn)算 精度問(wèn)題

Js代碼
復(fù)制代碼 代碼如下:
<script type="text/Javascript" language="Javascript">
alert(1/3);//彈出: 0.3333333333333333
alert(0.09999999 + 0.00000001);//彈出: 0.09999999999999999
alert(-0.09999999 - 0.00000001);//彈出: -0.09999999999999999
alert(0.012345 * 0.000001);//彈出: 1.2344999999999999e-8
alert(0.000001 / 0.0001);//彈出: 0.009999999999999998
</script>
<script type="text/Javascript" language="Javascript">
    alert(1/3);//彈出: 0.3333333333333333
    alert(0.09999999 + 0.00000001);//彈出: 0.09999999999999999
    alert(-0.09999999 - 0.00000001);//彈出: -0.09999999999999999
    alert(0.012345 * 0.000001);//彈出: 1.2344999999999999e-8
    alert(0.000001 / 0.0001);//彈出: 0.009999999999999998
</script>
[code]
按正常計(jì)算的話,除第一行外(因?yàn)槠浔旧砭筒荒艹M),其他都應(yīng)該要得到精確的結(jié)果,從彈出的結(jié)果我們卻發(fā)現(xiàn)不是我們想要的正確結(jié)果。為了解決浮點(diǎn)數(shù)運(yùn)算不準(zhǔn)確的問(wèn)題,在運(yùn)算前我們把參加運(yùn)算的數(shù)先升級(jí)(10的X的次方)到整數(shù),等運(yùn)算完后再降級(jí)(0.1的X的次方)。現(xiàn)收集并整理貼于此,以備后用。
加法
Js代碼
[code]
//說(shuō)明:Javascript的加法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相加的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的加法結(jié)果。
//調(diào)用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精確結(jié)果
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類型增加一個(gè)add方法,調(diào)用起來(lái)更加方便。
Number.prototype.add = function (arg){
return accAdd(arg,this);
}
//說(shuō)明:Javascript的加法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相加的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的加法結(jié)果。
//調(diào)用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精確結(jié)果
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類型增加一個(gè)add方法,調(diào)用起來(lái)更加方便。
Number.prototype.add = function (arg){
return accAdd(arg,this);
}
減法
Js代碼
[code]
//說(shuō)明:Javascript的減法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相加的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的減法結(jié)果。
//調(diào)用:accSub(arg1,arg2)
//返回值:arg1減上arg2的精確結(jié)果
function accSub(arg1,arg2){
return accAdd(arg1,-arg2);
}
//給Number類型增加一個(gè)sub方法,調(diào)用起來(lái)更加方便。
Number.prototype.sub = function (arg){
return accSub(this,arg);
}
//說(shuō)明:Javascript的減法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相加的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的減法結(jié)果。
//調(diào)用:accSub(arg1,arg2)
//返回值:arg1減上arg2的精確結(jié)果
function accSub(arg1,arg2){
return accAdd(arg1,-arg2);
}
//給Number類型增加一個(gè)sub方法,調(diào)用起來(lái)更加方便。
Number.prototype.sub = function (arg){
return accSub(this,arg);
}

乘法
Js代碼
復(fù)制代碼 代碼如下:
//說(shuō)明:Javascript的乘法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相乘的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的乘法結(jié)果。
//調(diào)用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精確結(jié)果
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類型增加一個(gè)mul方法,調(diào)用起來(lái)更加方便。
Number.prototype.mul = function (arg){
return accMul(arg, this);
}
//說(shuō)明:Javascript的乘法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相乘的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的乘法結(jié)果。
//調(diào)用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精確結(jié)果
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類型增加一個(gè)mul方法,調(diào)用起來(lái)更加方便。
Number.prototype.mul = function (arg){
return accMul(arg, this);
} 除法
Js代碼
//說(shuō)明:Javascript的除法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相除的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的除法結(jié)果。
//調(diào)用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精確結(jié)果
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類型增加一個(gè)div方法,調(diào)用起來(lái)更加方便。
Number.prototype.div = function (arg){
return accDiv(this, arg);
}
//說(shuō)明:Javascript的除法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相除的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的除法結(jié)果。
//調(diào)用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精確結(jié)果
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類型增加一個(gè)div方法,調(diào)用起來(lái)更加方便。
Number.prototype.div = function (arg){
return accDiv(this, arg);
}

測(cè)試一把
Js代碼
復(fù)制代碼 代碼如下:
<script type="text/Javascript" language="Javascript">
/*
alert(0.09999999 + 0.00000001);//彈出: 0.09999999999999999
alert(-0.09999999 - 0.00000001);//彈出: -0.09999999999999999
alert(0.012345 * 0.000001);//彈出: 1.2344999999999999e-8
alert(0.000001 / 0.0001);//彈出: 0.009999999999999998
*/
alert(0.09999999.add(0.00000001));//彈出: 0.1
alert(-0.09999999.sub(0.00000001));//彈出: -0.09999998
alert(0.012345.mul(0.000001));//彈出: 1.2345e-8
alert(0.000001.div(0.0001));//彈出: 0.01
</script>

JavaScript技術(shù)JavaScript 浮點(diǎn)數(shù)運(yùn)算 精度問(wèn)題,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 蜜桃最新网址 | 亚洲日本在线不卡二区 | 免费看国产曰批40分钟 | 国产在线视精品在亚洲 | 亚洲精品第二页 | 纯肉宠文高h一对一 | 精品国产乱码久久久久久下载 | 国产精品色无码AV在线观看 | 99久久精品费精品国产 | 最近更新2019中文字幕国语 | 日韩一区二区三区射精 | 伊人影院2019 | 卫生间被教官做好爽HH视频 | 亚洲国产在线99视频 | 亚洲高清无在码在线电影 | 大稥焦伊人一本dao 大香伊人中文字幕精品 | 全身无赤裸裸美女网站 | 国产综合自拍 偷拍在线 | 亚洲AVAV天堂AV在线网爱情 | 花蝴蝶在线观看免费中文版高清 | 亚洲视频91 | 69国产精品成人无码视频 | A级超碰视频在线观看 | 国产97精品久久久天天A片 | VIDEOSGGRATIS欧美另类 | 快穿之诱受双性被灌满h | 无码任你躁久久久久久久 | 天美传媒 免费观看 | 日日a.v拍夜夜添久久免费 | 色窝窝777欧美午夜精品影院 | 囯产免费精品一品二区三区视频 | 光溜溜的美女直播软件 | 亚洲AV久久无码精品九九软件 | 和美女啪啪啪动态图 | 久久久久久九九 | 高清国产mv视频在线观看 | 免费精品国产人妻国语麻豆 | 久久热免费视频 | 国产精品久久久久久AV免费不卡 | 亚洲精品www久久久久久久软件 | 日韩欧美国产免费看清风阁 |