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 相关文章推荐
js正确获取元素样式详解
Aug 07 Javascript
jquery利用event.which方法获取键盘输入值的代码
Oct 09 Javascript
jQuery功能函数详解
Feb 01 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
Mar 25 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
Mar 26 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
Aug 27 Javascript
必备的JS调试技巧汇总
Jul 20 Javascript
类似于QQ的右滑删除效果的实现方法
Oct 16 Javascript
JavaScript数组排序reverse()和sort()方法详解
Dec 24 Javascript
vue给组件传递不同的值方法
Sep 29 Javascript
详解ES6中class的实现原理
Oct 03 Javascript
js基于canvas实现时钟组件
Feb 07 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
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
Python 创建子进程模块subprocess详解
2015/04/08 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
如何基于Python实现自动扫雷
2020/01/06 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
为什么使用接口?
2014/08/13 面试题
实习评语
2013/12/16 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
太太口服液广告词
2014/03/20 职场文书
初一学生期末评语
2014/04/24 职场文书
企业承诺书格式
2014/05/21 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL