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 字符串连接[性能比较]
May 10 Javascript
JS 进度条效果实现代码整理
May 21 Javascript
Javascript毫秒数用法实例
Feb 05 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
Jul 21 Javascript
关于js原型的面试题讲解
Sep 25 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 Javascript
从零开始做一个pagination分页组件
Mar 15 Javascript
vue2 前端搜索实现示例
Feb 26 Javascript
vue-router+nginx 非根路径配置方法
Jun 30 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
Jul 20 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 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
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
python实现多进程通信实例分析
2019/09/01 Python
使用Python实现牛顿法求极值
2020/02/10 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
中国梦口号
2014/06/13 职场文书
委托书怎样写
2014/08/30 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
师德师风整改措施
2014/10/24 职场文书
公司年夜饭通知
2015/04/25 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
会议营销主持词
2015/07/03 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
基于Python实现nc批量转tif格式
2022/08/14 Python