zoukankan      html  css  js  c++  java
  • 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,','));
      })

    结果:

      

  • 相关阅读:
    线段树套线段树
    hdu6800
    半平面交 poj1279
    Unity:创建了一个自定义的找子物体的脚本
    Unity:一个简单的开门动画
    hdu 4940
    hdu 4939
    hdu 4932
    hdu 4912
    AC自动机
  • 原文地址:https://www.cnblogs.com/zengguowang/p/6187969.html
Copyright © 2011-2022 走看看