小編給大家分享一下Javascript中如何實(shí)現(xiàn)toFixed四舍六入,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
為洞頭等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及洞頭網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、洞頭網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
javascript中toFixed使用的是銀行家舍入規(guī)則。
銀行家舍入:所謂銀行家舍入法,其實(shí)質(zhì)是一種四舍六入五取偶(又稱四舍六入五留雙)法。
簡(jiǎn)單來(lái)說(shuō)就是:四舍六入五考慮,五后非零就進(jìn)一,五后為零看奇偶,五前為偶應(yīng)舍去,五前為奇要進(jìn)一。但是不論引入toFixed解決浮點(diǎn)數(shù)計(jì)算精度缺失的問(wèn)題也好,它有沒(méi)有使用銀行家舍入法也罷,都是為了解決精度的問(wèn)題,但是又離不開(kāi)二進(jìn)制浮點(diǎn)數(shù)的環(huán)境,但至少他幫助我們找到了問(wèn)題所在,從而讓我們有解決方法。
Number.prototype.toFixed = function(length) { var carry = 0; //存放進(jìn)位標(biāo)志 var num,multiple; //num為原浮點(diǎn)數(shù)放大multiple倍后的數(shù),multiple為10的length次方 var str = this + ''; //將調(diào)用該方法的數(shù)字轉(zhuǎn)為字符串 var dot = str.indexOf("."); //找到小數(shù)點(diǎn)的位置 if(str.substr(dot+length+1,1)>=5) carry=1; //找到要進(jìn)行舍入的數(shù)的位置,手動(dòng)判斷是否大于等于5,滿足條件進(jìn)位標(biāo)志置為1 multiple = Math.pow(10,length); //設(shè)置浮點(diǎn)數(shù)要擴(kuò)大的倍數(shù) num = Math.floor(this * multiple) + carry; //去掉舍入位后的所有數(shù),然后加上我們的手動(dòng)進(jìn)位數(shù) var result = num/multiple + ''; //將進(jìn)位后的整數(shù)再縮小為原浮點(diǎn)數(shù) /* * 處理進(jìn)位后無(wú)小數(shù) */ dot = result.indexOf("."); if(dot < 0){ result += '.'; dot = result.indexOf("."); } /* * 處理多次進(jìn)位 */ var len = result.length - (dot+1); if(len < length){ for(var i = 0; i < length - len; i++){ result += 0; } } return result; }
該方法的大致思路是首先找到舍入位,判斷該位置是否大于等于5,條件成立手動(dòng)進(jìn)一位,然后通過(guò)參數(shù)大小將原浮點(diǎn)數(shù)放大10的參數(shù)指數(shù)倍,然后再將包括舍入位后的位數(shù)利用floor全部去掉,根據(jù)我們之前的手動(dòng)進(jìn)位來(lái)確定是否進(jìn)位。
看完了這篇文章,相信你對(duì)“Javascript中如何實(shí)現(xiàn)toFixed四舍六入”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站標(biāo)題:Javascript中如何實(shí)現(xiàn)toFixed四舍六入
URL網(wǎng)址:http://muchs.cn/article48/picdep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、做網(wǎng)站、網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、商城網(wǎng)站、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)