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 相关文章推荐
5款Javascript颜色选择器
Oct 25 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
Mar 15 Javascript
基于javascript 闭包基础分享
Jul 10 Javascript
jquery ui resize 中border-box的bug修正
Apr 26 Javascript
JS简单判断滚动条的滚动方向实现方法
Apr 28 Javascript
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
AngularJs点击状态值改变背景色的实例
Dec 18 Javascript
vue二级路由设置方法
Feb 09 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
Jun 05 Javascript
Vue自定义toast组件的实例代码
Aug 15 Javascript
bootstrap table实现合并单元格效果
Dec 24 Javascript
Node.js 如何利用异步提升任务处理速度
Jan 07 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函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
jQuery实现的类flash菜单效果代码
2010/05/17 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
javascript类型转换示例
2014/04/29 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
Python httplib,smtplib使用方法
2008/09/06 Python
在Django框架中运行Python应用全攻略
2015/07/17 Python
pytorch 数据集图片显示方法
2018/07/26 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
python实现智能语音天气预报
2019/12/02 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
2014年创卫实施方案
2014/02/18 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
刑事起诉书范文
2015/05/19 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python
Python基础之变量的相关知识总结
2021/06/23 Python
angular异步验证器防抖实例详解
2022/03/31 Javascript
python函数的两种嵌套方法使用
2022/04/02 Python