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获取数组任意个不重复的随机数组元素
Mar 15 Javascript
js实现快速分享功能(你的文章分享工具)
Jun 25 Javascript
JavaScript获取Url里的参数
Dec 18 Javascript
JavaScript中的console.trace()函数介绍
Dec 29 Javascript
javascript原型模式用法实例详解
Jun 04 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
AngularJS中的Directive自定义一个表格
Jan 25 Javascript
动手写一个angular版本的Message组件的方法
Dec 16 Javascript
微信小程序实现带缩略图轮播效果
Nov 04 Javascript
详解小程序退出页面时清除定时器
Apr 28 Javascript
Vue 自适应高度表格的实现方法
May 13 Javascript
JavaScript动画实例之粒子文本的实现方法详解
Jul 28 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数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
javascript Xml增删改查(IE下)操作实现代码
2009/01/30 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
python使用chardet判断字符串编码的方法
2015/03/13 Python
python中尾递归用法实例详解
2015/04/28 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
详解python配置虚拟环境
2019/04/08 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
十岁生日家长答谢词
2014/01/17 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
外科护士长工作总结
2015/08/12 职场文书
《落花生》教学反思
2016/02/16 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
Python OpenGL基本配置方式
2022/05/20 Python