JS格式化数字金额用逗号隔开保留两位小数


Posted in Javascript onOctober 18, 2013

例如:
12345格式化为12,345.00
12345.6格式化为12,345.60
12345.67格式化为 12,345.67
只留两位小数。
回来后写了个格式化函数。可以控制小数位数,自动四舍五入。 代码如下:

function fmoney(s, n) { 
n = n > 0 && n <= 20 ? n : 2; 
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; 
var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1]; 
t = ""; 
for (i = 0; i < l.length; i++) { 
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : ""); 
} 
return t.split("").reverse().join("") + "." + r; 
}

调用:fmoney("12345.675910", 3),返回12,345.676
还原函数:
function rmoney(s) { 
return parseFloat(s.replace(/[^\d\.-]/g, "")); 
}

示例(可保存一下代码为html文件,运行查看效果):
<SCRIPT> 
function fmoney(s, n) { 
n = n > 0 && n <= 20 ? n : 2; 
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; 
var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1]; 
t = ""; 
for (i = 0; i < l.length; i++) { 
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : ""); 
} 
return t.split("").reverse().join("") + "." + r; 
} 
function rmoney(s) { 
return parseFloat(s.replace(/[^\d\.-]/g, "")); 
} 
function g(id) { 
return document.getElementById(id); 
} 
window.onload = function() { 
var num, txt = g("txt"), txt2 = g("txt2"), btn = g("btn"), btn2 = g("btn2"), span = g("span"); 
btn.onclick = function() { 
num = parseInt(g("num").value); 
txt.value = fmoney(txt.value, num); 
txt2.value = fmoney(txt2.value, num); 
}; 
btn2.onclick = function() { 
num = parseInt(g("num").value); 
span.innerHTML = "=" 
+ fmoney(rmoney(txt.value) + rmoney(txt2.value), num); 
}; 
}; 
</SCRIPT> 
小数点位数: 
<select id="num"> 
<option value="2">2</option> 
<option value="3">3</option> 
<option value="4">4</option> 
<option value="5">5</option> 
</select> 
<input type="text" id="txt" value="12345.675910"> + 
<input type="text" id="txt2" value="1223"> <span id="span"></span> 
<br> 
<input type="button" id="btn" value="格式化"> 
<input type="button" id="btn2" value="相加">

附:
/* 
* formatMoney(s,type) 
* 功能:金额按千位逗号分割 
* 参数:s,需要格式化的金额数值. 
* 参数:type,判断格式化后的金额是否需要小数位. 
* 返回:返回格式化后的数值字符串. 
*/ 
function formatMoney(s, type) { 
if (/[^0-9\.]/.test(s)) 
return "0"; 
if (s == null || s == "") 
return "0"; 
s = s.toString().replace(/^(\d*)$/, "$1."); 
s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1"); 
s = s.replace(".", ","); 
var re = /(\d)(\d{3},)/; 
while (re.test(s)) 
s = s.replace(re, "$1,$2"); 
s = s.replace(/,(\d\d)$/, ".$1"); 
if (type == 0) {// 不带小数位(默认是有小数位) 
var a = s.split("."); 
if (a[1] == "00") { 
s = a[0]; 
} 
} 
return s; 
} 
/* 
* 通用DateAdd(interval,number,date) 功能:实现javascript的日期相加功能. 
* 参数:interval,字符串表达式,表示要添加的时间间隔. 参数:number,数值表达式,表示要添加的时间间隔的个数. 参数:date,时间对象. 
* 返回:新的时间对象. var now = new Date(); var newDate = DateAdd("day",5,now); 
* author:devinhua(从○开始) update:2010-5-5 20:35 
*/ 
function DateAdd(interval, number, date) { 
if (date == null) 
return ""; 
switch (interval) { 
case "day": 
date = new Date(date); 
date = date.valueOf(); 
date += number * 24 * 60 * 60 * 1000; 
date = new Date(date); 
return date; 
break; 
default: 
return ""; 
break; 
} 
}
Javascript 相关文章推荐
Js 刷新框架页的代码
Apr 13 Javascript
javascript下高性能字符串连接StringBuffer类
Aug 16 Javascript
JavaScript中使用Substring删除字符串最后一个字符
Nov 03 Javascript
基于JS实现无缝滚动思路及代码分享
Jun 07 Javascript
BootStrapValidator初使用教程详解
Feb 10 Javascript
JavaScript实现选中文字提示新浪微博分享效果
Jun 15 Javascript
JavaScript实现简单评论功能
Aug 17 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
Nov 11 Javascript
解决Webpack 热部署检测不到文件变化的问题
Feb 22 Javascript
scrapyd schedule.json setting 传入多个值问题
Aug 07 Javascript
JavaScript如何把两个数组对象合并过程解析
Oct 10 Javascript
Vue如何实现组件间通信
May 15 Vue.js
JS截取字符串常用方法整理及使用示例
Oct 18 #Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 #Javascript
javascript代码运行不出来执行错误的可能情况整理
Oct 18 #Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 #Javascript
常用js字符串判断方法整理
Oct 18 #Javascript
javaScript arguments 对象使用介绍
Oct 18 #Javascript
js实现简单的星级选择器提交效果适用于评论等
Oct 18 #Javascript
You might like
PHP随机数 C扩展随机数
2016/05/04 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
Python生成验证码实例
2014/08/21 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
python二分查找算法的递归实现方法
2016/05/12 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
python批量修改文件名的示例
2020/09/27 Python
python statsmodel的使用
2020/12/21 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
销售冠军获奖感言
2014/02/03 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
党建工作经验交流材料
2014/05/25 职场文书
婚内房产协议书范本
2014/10/02 职场文书
2016教师节感恩话语
2015/12/09 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL