js 實現類似php函數number_format的功能


今天同事在做一個功能的時候需要使用js來實現類似php函數number_format的功能,最后就有了下面的方法,可以實現了:

  /**
     * number_format
     * @param number 傳進來的數,
     * @param bit 保留的小數位,默認保留兩位小數,
     * @param sign 為整數位間隔符號,默認為空格
     * @param gapnum 為整數位每幾位間隔,默認為3位一隔
     * @type arguments的作用:arguments[0] == number(之一)
    */
    function number_format(number,bit,sign,gapnum){
        //設置接收參數的默認值
        var bit    = arguments[1] ? arguments[1] : 2 ;
        var sign   = arguments[2] ? arguments[2] : ' ' ;
        var gapnum = arguments[3] ? arguments[3] : 3 ;
        var str    = '' ;

        number     = number.toFixed(bit);//格式化
        realnum    = number.split('.')[0];//整數位(使用小數點分割整數和小數部分)
        decimal    = number.split('.')[1];//小數位
        realnumarr = realnum.split('');//將整數位逐位放進數組 ["1", "2", "3", "4", "5", "6"]
        
        //把整數部分從右往左拼接,每bit位添加一個sign符號
        for(var i=1;i<=realnumarr.length;i++){
            str = realnumarr[realnumarr.length-i] + str ;
            if(i%gapnum == 0){
                str = sign+str;//每隔gapnum位前面加指定符號
            }
        }
        
        //當遇到 gapnum 的倍數的時候,會出現比如 ",123",這種情況,所以要去掉最前面的 sign
        str = (realnum.length%gapnum==0) ? str.substr(1) : str;
        //重新拼接實數部分和小數位
        realnum = str+'.'+decimal;
        return realnum;
    }

測試了一下:

  $("#caonidaye").click(function(){
    console.log(number_format(1234561.78,2,','));
  })

結果:

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM