最近做项目需要我们前端对金额进行千分位格式化(也就是说每三位用逗号隔开),代码已经做了修改  之前的版本是本人疏忽 真对不住大家了!现在已经做了修改 如果还有不完善的地方 请大家多多指教!

1. 支持用逗号隔开 0-9位 逗号隔开

JS代码如下:

  1. /**
  2. * JS格式化
  3. * @param number 要格式化的数字
  4. * @param d [0-9]位 逗号隔开
  5. */
  6.  
  7. function numFormat(number,d) {
  8.  
  9. var numArrs = ['0','1','2','3','4','5','6','7','8','9'],
  10. REG_NUMBER = /^\d+(.\d+)?$/;
  11.  
  12. d = d || 3; // 不传 是3位 千分位
  13.  
  14. if(isNumber(number) || isString(number) || REG_NUMBER.test(number)) {
  15.  
  16. // 先转换成字符串
  17. var toString = number + '',
  18. isPoint = toString.indexOf('.'),
  19. prefix, // 前缀
  20. suffix, // 后缀
  21. t = '';
  22.  
  23. if(isPoint > 0) {
  24. prefix = toString.substring(0,isPoint);
  25. suffix = toString.substring(isPoint + 1);
  26.  
  27. }else if(isPoint == 0) {
  28. prefix = '';
  29. suffix = toString.substring(1);
  30.  
  31. }else {
  32. prefix = toString;
  33. suffix = '';
  34. }
  35.  
  36. if(prefix != '') {
  37. prefixArr = prefix.split('').reverse();
  38.  
  39. var isArrayIndex = isArray(d,numArrs);
  40. if(isArrayIndex > -1) {
  41.  
  42. for(var i = 0, ilen = prefixArr.length; i < ilen; i+=1) {
  43. t += prefixArr[i] + ((i + 1) % isArrayIndex == 0 && (i + 1) != prefixArr.length ? "," : "");
  44. }
  45. t = t.split("").reverse().join("");
  46. if(suffix != '') {
  47. return t + "." + suffix;
  48. }else {
  49. return t;
  50. }
  51.  
  52. }else {
  53. return '传入的多少位不正确';
  54. }
  55.  
  56. }else if(prefix != '' && suffix == ''){
  57.  
  58. return prefix;
  59.  
  60. }else if(prefix == '' && suffix != ''){
  61. prefix = 0;
  62.  
  63. return prefix + suffix;
  64. }else {
  65. return "有错误";
  66. }
  67. }else {
  68. return '传入的要格式化的数字不符合';
  69. }
  70.  
  71. }
  72. function isArray(item,arrs) {
  73. for(var i = 0, ilen = arrs.length; i < ilen; i++) {
  74. if(item == arrs[i]) {
  75. return i;
  76. }
  77. }
  78. return -1;
  79. }
  80. function isNumber(number) {
  81. return Object.prototype.toString.apply(number) === '[object Number]';
  82. }
  83.  
  84. function isString(number) {
  85. return Object.prototype.toString.apply(number) === ['object String'];
  86. }

但是貌似还有一个不完善的地方 就是 我这样调用 console.log(numFormat("1111.00"));  在控制台上 直接输出 1,111 而不是1,111.00 也就是说 如果小数点后面的是 0的话 游览器自动会抹掉后面的0 其他的都正常!本人测试了下 基本符合要求 如有不完善的地方 请大家多多指教!

JS数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的更多相关文章

  1. 好用的JS数字格式化

    /* *js格式化数字代码 * *value: 要格式化的数字值 *scale: 最多保留几位小数 *zeroed: 是否保留尾0 *percented: 是否转称百分比形式 * */ functio ...

  2. js数字格式化-四舍五入精简版

    搜索网上的,数字格式化过余复杂,自己想了个简单方法,欢迎吐槽. 简化说明: '123333' => 12.3万 parseInt('123333') 字符串转整型 parseInt('12333 ...

  3. js数字格式化(截断格式化或四舍五入格式化)

    /*** * 数字格式化(适合金融产品截断小数位后展示) * @param num * @param pattern (标准格式:#,###.## 或#.## 或#,###00.00) * @para ...

  4. js数字格式化(加千分位逗号)

    需求:当金额大于10000时,在作展示的时候,需要加千分位逗号,就是每隔1000要用逗号分隔: 方法一:使用toLocaleString()方法 此方法和toString()方法的区别看这里 < ...

  5. js 数字格式化,只能输入正负整数,小数

    1.只能输入正整数 <input name="columnValue" class="input96 required" type="text& ...

  6. js数字格式化千分位格式

    带小数点的 var a = 8462948.2453; console.log(a.toLocaleString()) //8,462,948.245 不带小数点的 num.toString().re ...

  7. Android 上的代码阅读器 CoderBrowserHD 修改支持 go 语言代码

    我在Android上的代码阅读器用的是 https://github.com/zerob13/CoderBrowserHD 改造的版本,改造后的版本我放在 https://github.com/ghj ...

  8. PAT1080 MOOC期终成绩 (25分) ——同样参考了柳婼大神的代码及思路,在自己的代码上做了修改,还是很复杂

    1080 MOOC期终成绩 (25分)   对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分 ...

  9. Python 数字系列-数字格式化输出

    数字的格式化输出 问题 你需要将数字格式化后输出,并控制数字的位数.对齐.千位分隔符和其他的细节. 解决方案 格式化输出单个数字的时候,可以使用内置的 format() 函数,比如: >> ...

随机推荐

  1. 解决hash冲突之分离链接法

    解决hash冲突之分离链接法 分离链接法:其做法就是将散列到同一个值的所有元素保存到一个表中. 这样讲可能比较抽象,下面看一个图就会很清楚,图如下 相应的实现可以用分离链接散列表来实现(其实就是一个l ...

  2. HDU5840(SummerTrainingDay08-B 树链剖分+分块)

    This world need more Zhu Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  3. python-备忘录模式

    源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明: 一个成熟的软件应当允许用户取消不确定的操作或者从错误的状态中恢复过来.复制,粘体 ...

  4. Vue.js之组件系统

    vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. Vue.js组件系统 每一个新技 ...

  5. Css 基础知识(一)

    1.Css概念 CSS 指层叠样式表 (Cascading Style Sheets)(级联样式表),Css是用来美化html标签的,相当于页面化妆. ◆样式表书写位置 2. 选择器 2.1.写法 选 ...

  6. React之设置元素的滚动条

    在React中,解耦了对DOM元素的操作,但有时我们确实需要对DOM操作,比如设置元素的滚动条,这时ref就满足了我们的需求 在低版本的react中,ref可以是一个string类型的属性,通过thi ...

  7. [转]SQL SERVER 2008 登陆失败(SQL和windows都没有对应的权限)

    转自:http://www.cnblogs.com/zerocc/p/3425431.html 昨天在测试一些权限今天早上来就发现SQL SERVER 登陆不上去,报错为: 用户登陆失败:消息 184 ...

  8. 语义SLAM的数据关联和语义定位(四)多目标测量概率模型

    多目标模型 这部分想讲一下Semantic Localization Via the Matrix Permanent这篇文章的多目标测量概率模型.考虑到实际情况中,目标检测算法从单张图像中可能检测出 ...

  9. .NET(C#)如何遍历Dictionary

    我们知道.NET中的Dictionary是键/值对的集合,使用起来也是比较方便,Dictionary也可以用KeyValuePair来迭代遍历,具体如下: using System; using Sy ...

  10. SqlServer 全文索引指令大全(转载)

    -- 创建测试表 -- DROP TABLE FullTextIndexing CREATE TABLE FullTextIndexing ( ID ,) NOT NULL, Sentence VAR ...