免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
js實(shí)現(xiàn)數(shù)字轉(zhuǎn)換為逗號(hào)分隔的格式化字符串

 

//注意:數(shù)字與字符的轉(zhuǎn)換會(huì)丟失多余的尾部0('123.010'<->123.01,'123.00'<->123)
var NumberFormat = {
    //按照每3位逗號(hào)分隔,字符串截子串法
    toCommaFormat: function(number){
        //如果是數(shù)字,則轉(zhuǎn)換為字符串
        if(typeof number == 'number'){
            number = String(number)
        }
        
        var pointIndex = number.lastIndexOf('.'); //獲取小數(shù)點(diǎn)的位置
        var hasDecimal = pointIndex != -1; //檢查是否包含小數(shù)點(diǎn)
        var numberInteger = hasDecimal ? number.substring(0, pointIndex) : number; //獲取數(shù)的整數(shù)部分
        var length = numberInteger.length;
        if(length > 3){
            var numberFormat = '';
            //從尾部往前截子串拼接
            for(var i= numberInteger.length; i> 0; i=i-3){
                //當(dāng)前子串+之前拼接好的子串(因:substring(0,1) == substring(-2,1),故無(wú)需判斷i-3為負(fù)數(shù)的情況)
                numberFormat = numberInteger.substring(i-3,i) + (numberFormat==''?'':(','+numberFormat));
            }
            //整數(shù)部分+小數(shù)部分
            var numberDecimal = hasDecimal ? number.substring(pointIndex) : '';
            return numberFormat + numberDecimal;
        }else{
            //無(wú)需分隔,直接返回
            return number;
        }
    },
    //按照每3位逗號(hào)分隔,余數(shù)拼接法(缺點(diǎn):有位數(shù)限制)
    toCommaFormat2: function(number){
        //如果是數(shù)字,則轉(zhuǎn)換為字符串
        if(typeof number == 'number'){
            number = String(number)
        }
        
        var pointIndex = number.lastIndexOf('.'); //獲取小數(shù)點(diǎn)的位置
        var hasDecimal = pointIndex != -1; //檢查是否包含小數(shù)點(diǎn)
        var numberInteger = hasDecimal ? number.substring(0, pointIndex) : number; //獲取數(shù)的整數(shù)部分
        var length = numberInteger.length;
        if(length > 3){
            var numberFormat = '';
            var remainder; //余數(shù)
            var quotient; //
            while(true){ 
                quotient = Math.floor(Number(numberInteger)/1000); //商標(biāo)識(shí)還需不需要進(jìn)一步分隔
                remainder = Number(numberInteger)%1000; //余數(shù)即是分隔下來(lái)的子串
                numberFormat = String(remainder) + (numberFormat == ''?'':(','+numberFormat)); //當(dāng)前余數(shù)拼接之前的余數(shù)
                if(quotient == 0){
                    //商為0,計(jì)算完畢
                    break;
                }
                //商作為被除數(shù),進(jìn)一步分隔
                numberInteger =  quotient; 
            }
            //整數(shù)部分+小數(shù)部分
            var numberDecimal = hasDecimal ? number.substring(pointIndex) : '';
            return numberFormat + numberDecimal;
        }else{
            //無(wú)需分隔,直接返回
            return number;
        }
        
    },
    //正則式替換,來(lái)自網(wǎng)友
    format_number:function(nStr ){
        nStr += '';  //數(shù)字轉(zhuǎn)換為字符 
        x = nStr.split('.');  //按照小數(shù)點(diǎn)分隔
        x1 = x[0];  //整數(shù)部分
        x2 = x.length > 1 ? '.' + x[1] : '';  //小數(shù)部分
        var rgx = /(\d+)(\d{3})/;  //正則式定義
        while (rgx.test(x1)) {  //正則式匹配
            x1 = x1.replace(rgx, '$1' + ',' + '$2');   //正則式替換
        }  
        return x1 + x2;  
    } 
    
};

 

總結(jié):

1.推薦使用字符串截子串的方式進(jìn)行格式化,這樣沒(méi)有長(zhǎng)度限制。

2.調(diào)用函數(shù)傳參最好使用字符串類(lèi)型,這樣才不會(huì)丟失尾部的0。

3.網(wǎng)友的正則式法非常簡(jiǎn)潔漂亮,還有字符串分隔成單字符反序拼接法等。

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
leetcode
將字符串中出現(xiàn)的第n個(gè)字符置換
B4A函數(shù)手冊(cè)中文版
flex身份證驗(yàn)證
mysql使用SUBSTRING_INDEX截取部分字符串
js截取字符串
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服