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判断一个字符串是否包含一个子串的方法
Jan 26 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
Jul 28 Javascript
纯javascript实现分页(两种方法)
Aug 26 Javascript
基于jquery实现百度新闻导航菜单滑动动画
Mar 15 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 Javascript
iscroll动态加载数据完美解决方法
Jul 18 Javascript
Angularjs单选框相关的示例代码
Aug 17 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
Aug 22 Javascript
Layer+Echarts构建弹出层折线图的方法
Sep 25 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
Mar 09 Javascript
使用React-Router实现前端路由鉴权的示例代码
Jul 26 Javascript
详解vue中v-model和v-bind绑定数据的异同
Aug 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模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
Python List cmp()知识点总结
2019/02/18 Python
python调试神器PySnooper的使用
2019/07/03 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
天猫活动策划方案
2014/08/21 职场文书
领导班子四风表现材料
2014/08/23 职场文书