js 实现类似php函数number_format的功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,\',\'));
  })

结果:

  

以上是关于js 实现类似php函数number_format的功能的主要内容,如果未能解决你的问题,请参考以下文章

php number_format()函数 语法

C#中PHP的number_format的等效函数是啥?

PHP number_format() 函数

如何从 number_format 函数中删除 PHP 中的美分部分

PHP字符串函数 number_format(以千位分隔符方式格式化一个数字)

php number_format 函数将 11223344556677 更改为 1122334455/66/77