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实现一个TreeMenu效果分享
Aug 28 Javascript
js实现鼠标经过时图片滚动停止的方法
Feb 16 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
Oct 14 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
Apr 27 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
Oct 30 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 Javascript
webpack4.0打包优化策略整理小结
Mar 30 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
Jul 13 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
Jun 07 Javascript
Vue-CLI与Vuex使用方法实例分析
Jan 06 Javascript
js瀑布流布局的实现
Jun 28 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实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
2012/02/27 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
跟老齐学Python之复习if语句
2014/10/02 Python
python学习 流程控制语句详解
2016/06/01 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
python变量的作用域是什么
2020/05/26 Python
Django框架请求生命周期实现原理
2020/11/13 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
优秀老员工获奖感言
2014/02/15 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
小学中队活动总结
2015/05/11 职场文书
志愿服务心得体会
2016/01/15 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
简单谈谈Python面向对象的相关知识
2021/06/28 Python