源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码

  • 时间:2020-07-09 00:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
最近做项目需要我们前端对金额进行千分位格式化(也就是说每三位用逗号隔开),代码已经做了修改  之前的版本是本人疏忽 真对不住大家了!现在已经做了修改 如果还有不完善的地方 请大家多多指教! 1. 支持用逗号隔开 0-9位 逗号隔开 JS代码如下:
[u]复制代码[/u] 代码如下:
/**          * JS格式化          * @param number 要格式化的数字          * @param d [0-9]位 逗号隔开          */          function numFormat(number,d) {              var numArrs = ['0','1','2','3','4','5','6','7','8','9'],                  REG_NUMBER = /^\d+(.\d+)?$/;              d = d || 3; // 不传 是3位 千分位              if(isNumber(number) || isString(number) || REG_NUMBER.test(number)) {                  // 先转换成字符串                  var toString = number + '',                      isPoint = toString.indexOf('.'),                      prefix,   // 前缀                      suffix,   // 后缀                      t = '';                  if(isPoint > 0) {                     prefix = toString.substring(0,isPoint);                     suffix = toString.substring(isPoint + 1);                  }else if(isPoint == 0) {                     prefix = '';                     suffix = toString.substring(1);                  }else {                     prefix = toString;                     suffix = '';                  }                  if(prefix != '') {                     prefixArr = prefix.split('').reverse();                     var isArrayIndex = isArray(d,numArrs);                     if(isArrayIndex > -1) {                         for(var i = 0, ilen = prefixArr.length; i < ilen; i+=1) {                             t += prefixArr[i] + ((i + 1) % isArrayIndex == 0 && (i + 1) != prefixArr.length ? "," : "");                         }                         t = t.split("").reverse().join("");                         if(suffix != '') {                             return t + "." + suffix;                         }else {                             return t;                         }                     }else {                         return '传入的多少位不正确';                     }                  }else if(prefix != '' && suffix == ''){                     return prefix;                  }else if(prefix == '' && suffix != ''){                     prefix = 0;                     return prefix + suffix;                  }else {                      return "有错误";                  }             }else {                 return '传入的要格式化的数字不符合';             }          }          function isArray(item,arrs) {             for(var i = 0, ilen = arrs.length; i < ilen; i++) {                 if(item == arrs[i]) {                     return i;                 }             }             return -1;          }          function isNumber(number) {             return Object.prototype.toString.apply(number) === '[object Number]';          }          function isString(number) {             return Object.prototype.toString.apply(number) === ['object String'];          }
但是貌似还有一个不完善的地方 就是 我这样调用 console.log(numFormat("1111.00"));  在控制台上 直接输出 1,111 而不是1,111.00 也就是说 如果小数点后面的是 0的话 游览器自动会抹掉后面的0 其他的都正常!本人测试了下 基本符合要求 如有不完善的地方 请大家多多指教!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部