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 select控制插件
Aug 17 Javascript
JavaScript CSS 修改学习第四章 透明度设置
Feb 19 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
Oct 14 Javascript
JS 实现点击a标签的时候让其背景更换
Oct 15 Javascript
javascript实现复选框全选或反选
Feb 04 Javascript
node 利用进程通信实现Cluster共享内存
Oct 27 Javascript
Vue2.0 v-for filter列表过滤功能的实现
Sep 07 Javascript
了解javascript中变量及函数的提升
May 27 Javascript
vue组件三大核心概念图文详解
May 30 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
Apr 22 Javascript
详解CocosCreator消息分发机制
Apr 16 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
php文件操作实例代码
2012/05/10 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
URL中“#” “?” &amp;“”号的作用浅析
2017/02/04 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
python线程锁(thread)学习示例
2013/12/04 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
python同步两个文件夹下的内容
2019/08/29 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
django使用JWT保存用户登录信息
2020/04/22 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
品质主管岗位职责
2014/03/16 职场文书
认错检讨书
2014/10/02 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
体育委员竞选稿
2015/11/21 职场文书
Go语言入门exec的基本使用
2022/05/20 Golang