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 的 trim 函数的代码
Aug 13 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
Jul 26 Javascript
jquery时间下拉框小例子
Apr 15 Javascript
Javascript弹出窗口的各种方法总结
Nov 11 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
js模拟淘宝网的多级选择菜单实现方法
Aug 18 Javascript
详解react阻止无效重渲染的多种方式
Dec 11 Javascript
微信小程序点击顶部导航栏切换样式代码实例
Nov 12 Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 Javascript
react+antd 递归实现树状目录操作
Nov 02 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 Javascript
CocosCreator如何实现划过的位置显示纹理
Apr 14 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 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
FCK调用方法..
2006/12/21 Javascript
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
Python yield使用方法示例
2013/12/04 Python
Python实现的计算器功能示例
2018/04/26 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
python设置环境变量的作用整理
2020/02/17 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
三月法制宣传月活动总结
2014/07/03 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
机关工会工作总结2015
2015/05/26 职场文书
公司车队管理制度
2015/08/04 职场文书
老人院义工活动感想
2015/08/07 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书