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给input和textarea设定ie中的focus
May 29 Javascript
JavaScript 继承详解(一)
Jul 13 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
javascript实现C语言经典程序题
Nov 29 Javascript
AngularJS单选框及多选框实现双向动态绑定
Jan 13 Javascript
jquery实现页面常用的返回顶部效果
Mar 04 Javascript
微信小程序 scroll-view组件实现列表页实例代码
Dec 14 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
Dec 17 Javascript
微信小程序间使用navigator跳转传值问题实例分析
Mar 27 Javascript
js仿淘宝放大镜效果
Dec 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下MYSQL limit的优化
2008/01/10 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
CL vs ForZe BO5 第四场 2.13
2021/03/10 DOTA
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用Python编写Linux系统守护进程实例
2015/02/03 Python
浅谈Python中函数的参数传递
2016/06/21 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
python 生成器需注意的小问题
2020/09/29 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
软件测试面试题
2014/01/05 面试题
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
初中作文评语
2014/12/25 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript