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 相关文章推荐
document.onreadystatechange事件的用法分析
Oct 17 Javascript
jQuery调用WebService的实现代码
Jun 19 Javascript
JS获取IP、MAC和主机名的五种方法
Nov 14 Javascript
JavaScript的面向对象编程基础
Aug 13 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
Sep 17 Javascript
JS实现的最简Table选项卡效果
Oct 14 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
Sep 20 Javascript
理解Koa2中的async&amp;await的用法
Feb 05 Javascript
微信小程序实现美团菜单
Jun 06 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
Apr 16 jQuery
Node.js Windows Binary二进制文件安装方法
May 16 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
Sep 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&amp;MYSQL分页原理及实现
2007/01/02 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
php单件模式结合命令链模式使用说明
2008/09/07 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
php实现的xml操作类
2016/01/15 PHP
js下将字符串当函数执行的方法
2011/07/13 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
express 项目分层实践详解
2018/12/10 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
从零学Python之入门(五)缩进和选择
2014/05/27 Python
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
Django中信号signals的简单使用方法
2019/07/04 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Python 中@property的用法详解
2020/01/15 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
用python批量移动文件
2021/01/14 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
父亲生日宴会答谢词
2014/01/10 职场文书
运动会宣传口号
2014/06/09 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
个人委托函范文
2015/01/29 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
2015初中政教处工作总结
2015/07/21 职场文书