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 相关文章推荐
Javascript客户端将指定区域导出到Word、Excel的代码
Oct 22 Javascript
JavaScript 学习笔记(十五)
Jan 28 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
Apr 16 Javascript
javascript函数定义的几种区别小结
Jan 06 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
Mar 11 Javascript
Javascript removeChild()删除节点及删除子节点的方法
Dec 27 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
Aug 19 Javascript
Bootstrap按钮组简单实现代码
Mar 06 Javascript
vue router学习之动态路由和嵌套路由详解
Sep 21 Javascript
微信小程序实现搜索历史功能
Mar 26 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
React自定义hook的方法
Jun 25 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
Python中的闭包实例详解
2014/08/29 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
详解Django中六个常用的自定义装饰器
2018/07/04 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
用python写测试数据文件过程解析
2019/09/25 Python
Python hmac模块使用实例解析
2019/12/24 Python
Python类中self参数用法详解
2020/02/13 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
园林技术个人的自我评价
2014/02/15 职场文书
项目采购员岗位职责
2014/04/15 职场文书
家属答谢词
2015/01/05 职场文书
2015年环卫工作总结
2015/04/28 职场文书
教师节获奖感言
2015/07/31 职场文书
大学班干部竞选稿
2015/11/20 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
我的收音机情缘
2022/04/05 无线电