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 相关文章推荐
将字符串转换成gb2312或者utf-8编码的参数(js版)
Apr 10 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
May 04 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
Jul 27 Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 Javascript
详解Vue.directive 自定义指令
Mar 27 Javascript
Vue项目实现简单的权限控制管理功能
Jul 17 Javascript
node.js域名解析实现方法详解
Nov 05 Javascript
Vue接口封装的完整步骤记录
May 14 Vue.js
36个正则表达式(开发效率提高80%)
Nov 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
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
js实现秒表计时器
2019/12/16 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
详解python配置虚拟环境
2019/04/08 Python
简单了解Python生成器是什么
2019/07/02 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
如何清空python的变量
2020/07/05 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
is_file和file_exists效率比较
2021/03/14 PHP
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
安全员岗位职责
2013/11/11 职场文书
高校自主招生自荐信
2013/12/09 职场文书
创建青年文明号材料
2014/05/09 职场文书
幼儿园课题实施方案
2014/05/14 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
先进个人事迹材料
2014/12/29 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
太行山上观后感
2015/06/05 职场文书
初中数学教学随笔
2015/08/15 职场文书
老舍《猫》教学反思
2016/02/17 职场文书