Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)


Posted in Javascript onJune 22, 2016

在项目里碰到需要把类似'450000'的数字转换为会计记账所用的格式,'450,000.00',分隔千分位和小数点后不够两位数时自动补齐,已下记录几种实现的方式

ps:如果不考虑后面的小数点,最快捷的方法:

"12345678".replace(/[0-9]+?(?=(?:([0-9]{3}))+$)/g,function(a){return a+','}); //输出 12 345 678

1.用循环的方式实现

function formatNum(str){
 var newStr = "";
 var count = 0;

 if(str.indexOf(".")==-1){
  for(var i=str.length-1;i>=0;i--){
   if(count % 3 == 0 && count != 0){
    newStr = str.charAt(i) + "," + newStr;
   }else{
    newStr = str.charAt(i) + newStr;
   }
   count++;
  }
  str = newStr + ".00"; //自动补小数点后两位
  console.log(str)
 }
 else
 {
  for(var i = str.indexOf(".")-1;i>=0;i--){
   if(count % 3 == 0 && count != 0){
    newStr = str.charAt(i) + "," + newStr; //碰到3的倍数则加上“,”号
   }else{
    newStr = str.charAt(i) + newStr; //逐个字符相接起来
   }
   count++;
  }
  str = newStr + (str + "00").substr((str + "00").indexOf("."),3);
  console.log(str)
 }
}

formatNum('13213.24'); //输出13,213.34
formatNum('132134.2'); //输出132,134.20
formatNum('132134'); //输出132,134.00
formatNum('132134.236'); //输出132,134.236

2.使用正则(比较不足的是还是得自己去判断小数点后面的位数,有更智能的正则请通知我~)

function regexNum(str){
 var regex = /(\d)(?=(\d\d\d)+(?!\d))/g;

 if(str.indexOf(".") == -1){

  str= str.replace(regex,',') + '.00';
  console.log(str)

 }else{
  var newStr = str.split('.');
  var str_2 = newStr[0].replace(regex,',');

  if(newStr[1].length <= 1){ 
   //小数点后只有一位时
   str_2 = str_2 + '.' + newStr[1] +'0';
   console.log(str_2)

  }else if(newStr[1].length > 1){ 
   //小数点后两位以上时
   var decimals = newStr[1].substr(0,2);
   var srt_3 = str_2 + '.' + decimals;
   console.log(srt_3)
  }
 }
};
regexNum('23424224'); //输出2,42,224.00 
regexNum('23424224.2'); //输出2,42,224.20
regexNum('23424224.22'); //输出2,42,224.22
regexNum('23424224.233'); //输出2,42,224.23

以上就是本文的全部内容,了解更多JavaScript的语法,大家可以查看:《JavaScript 参考教程》、《JavaScript代码风格指南》,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中的prototype使用说明
Apr 13 Javascript
得到jQuery detach()后节点中的某个值实现代码
Feb 05 Javascript
浅谈JavaScript字符串拼接
Jun 25 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
jQuery防止重复绑定事件的解决方法
May 14 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
May 23 Javascript
JS简单实现点击复制链接的方法
Aug 03 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 jQuery
关于在vue-cli中使用微信自动登录和分享的实例
Jun 22 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 Javascript
vue组件详解之使用slot分发内容
Apr 09 Javascript
Javascript将数字转化成为货币格式字符串
Jun 22 #Javascript
jQuery soColorPacker 网页拾色器
Jun 22 #Javascript
DIV+CSS+jQ实现省市联动可扩展
Jun 22 #Javascript
Javascript对象字面量的理解
Jun 22 #Javascript
Javascript闭包与函数柯里化浅析
Jun 22 #Javascript
JS中innerHTML和pasteHTML的区别实例分析
Jun 22 #Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
Jun 22 #Javascript
You might like
用PHP与XML联手进行网站编程代码实例
2008/07/10 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
Python遍历pandas数据方法总结
2018/02/09 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
廉政教育心得体会
2014/01/01 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
教师个人教学反思
2016/02/23 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
MySQL学习之基础操作总结
2022/03/19 MySQL