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 相关文章推荐
JQuery 返回布尔值Is()条件判断方法代码
May 14 Javascript
JS获得图片alt信息的方法
Apr 01 Javascript
理解Javascript的call、apply
Dec 16 Javascript
jQuery EasyUI Tab 选项卡问题小结
Aug 16 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
详解JavaScript中return的用法
May 08 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
JavaScript 中的 this 简单规则
Sep 19 Javascript
详解用Node.js实现Restful风格webservice
Sep 29 Javascript
p5.js入门教程之鼠标交互的示例
Mar 16 Javascript
微信小程序实现简单跑马灯效果
May 26 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
May 17 Javascript
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批量删除数据
2007/01/18 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
python装饰器深入学习
2018/04/06 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
新锐科技Java程序员面试题
2016/07/25 面试题
致裁判员加油稿
2014/02/08 职场文书
文秘大学生求职信
2014/02/25 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
大专生求职信
2014/06/29 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
实习单位指导教师评语
2014/12/30 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
刑事起诉书范文
2015/05/19 职场文书
MySQL的join buffer原理
2021/04/29 MySQL
详解MySQL 联合查询优化机制
2021/05/10 MySQL