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打印iframe内容示例代码
Aug 20 Javascript
jquery实现div阴影效果示例代码
Sep 16 Javascript
String.prototype实现的一些javascript函数介绍
Nov 22 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
Nov 29 Javascript
Javascript技术栈中的四种依赖注入小结
Feb 27 Javascript
jQuery学习笔记之回调函数
Aug 15 Javascript
教你如何在Node.js中使用jQuery
Aug 28 Javascript
AngularJS中的拦截器实例详解
Apr 07 Javascript
AngularJS的$location使用方法详解
Oct 19 Javascript
webpack项目使用eslint建立代码规范实现
May 16 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
Jul 22 Javascript
VUE组件中的 Drawer 抽屉实现代码
Aug 06 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 miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
Javascript 中的类和闭包
2010/01/08 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
python动态性强类型用法实例
2015/05/09 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python SVD压缩图像的实现代码
2019/11/05 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
印尼旅游网站:via
2017/11/12 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
实习护理工作自我评价
2013/09/25 职场文书
旅游管理专业个人求职信范文
2013/12/24 职场文书
关于学习的演讲稿
2014/05/10 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers