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学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
Mar 14 Javascript
bootstrap data与jquery .data
Jul 07 Javascript
javascript中substring()、substr()、slice()的区别
Aug 30 Javascript
JS实现网页上随滚动条滚动的层效果代码
Nov 04 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
Apr 01 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
jQuery组件easyui基本布局实现代码
Aug 25 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
原生js实现类似fullpage的单页/全屏滚动
Jan 22 Javascript
vue ssr 实现方式(学习笔记)
Jan 18 Javascript
关于小程序优化的一些建议(小结)
Dec 10 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多线程抓取网页实现代码
2010/07/22 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP内置加密函数详解
2016/11/20 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
两个SUBMIT按钮,如何区分处理
2006/08/22 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
js实现日历的简单算法
2017/01/24 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
Python中请使用isinstance()判断变量类型
2014/08/25 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
python中pickle模块浅析
2020/12/29 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
猫咪家具:CatsPlay
2018/11/03 全球购物
应届大学生的推荐信
2013/11/20 职场文书
出国签证在职证明
2014/01/16 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
期中考试复习计划
2015/01/19 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript