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 相关文章推荐
jquery实现非叠加式的搜索框提示效果
Jan 07 Javascript
node.js中的url.format方法使用说明
Dec 10 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
Mar 14 Javascript
js实现一个链接打开两个链接地址的方法
May 12 Javascript
JavaScript中的Math.LOG2E属性使用详解
Jun 14 Javascript
移动Web中图片自适应的两种JavaScript解决方法
Jun 18 Javascript
开启Javascript中apply、call、bind的用法之旅模式
Oct 28 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
vue动态组件实现选项卡切换效果
Mar 08 Javascript
基于vue2的table分页组件实现方法
Mar 20 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
Aug 18 jQuery
基于Vue中点击组件外关闭组件的实现方法
Mar 06 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购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
零基础php编程好学吗
2019/10/11 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
浅谈javascript 面向对象编程
2009/10/28 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
Vue 2.0入门基础知识之内部指令详解
2017/10/15 Javascript
Vue header组件开发详解
2018/01/26 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
幼儿园国庆节活动方案
2014/02/01 职场文书
简单的大学生自我鉴定
2014/02/18 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书