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实现将xml转换成html table表格的方法
Apr 17 Javascript
纯jquery实现模仿淘宝购物车结算
Aug 20 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
Dec 29 Javascript
使用jQuery加载html页面到指定的div实现方法
Jul 13 Javascript
浅析Ajax语法
Dec 05 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
Mar 12 Javascript
Vue路由切换时的左滑和右滑效果示例
May 29 Javascript
react同构实践之实现自己的同构模板
Mar 13 Javascript
微信小程序上传文件到阿里OSS教程
May 20 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
angular组件间通讯的实现方法示例
May 07 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
Jan 07 Vue.js
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
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
jQuery 解析xml文件
2009/08/09 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
JS中使用media实现响应式布局
2017/08/04 Javascript
JsChart组件使用详解
2018/03/04 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
跟老齐学Python之Import 模块
2014/10/13 Python
python中eval与int的区别浅析
2019/08/11 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
python 有效的括号的实现代码示例
2019/11/11 Python
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
德国网上药房:Apotal
2017/04/04 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
自荐书范文范例
2014/02/13 职场文书
文明市民先进事迹
2014/05/15 职场文书
电子商务求职信
2014/06/15 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
债务授权委托书范本
2014/10/17 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书