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编程起步(第七课)
Jan 10 Javascript
JSON 客户端和服务器端的格式转换
Aug 27 Javascript
JavaScript类和继承 constructor属性
Mar 04 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
Dec 25 Javascript
javascript中typeof操作符和constucor属性检测
Feb 26 Javascript
快速学习jQuery插件 Form表单插件使用方法
Dec 01 Javascript
树结构之JavaScript
Jan 24 Javascript
简单实现jquery隔行变色
Nov 09 jQuery
JavaScript多线程运行库Nexus.js详解
Dec 22 Javascript
简单的Vue SSR的示例代码
Jan 12 Javascript
详解如何webpack使用DllPlugin
Sep 30 Javascript
node.js连接mysql与基本用法示例
Jan 05 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
php实现读取超大文件的方法
2014/07/28 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
python字典序问题实例
2014/09/26 Python
举例介绍Python中的25个隐藏特性
2015/03/30 Python
用实例解释Python中的继承和多态的概念
2015/04/27 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
教师自我鉴定范文
2014/03/20 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
大学副班长竞选稿
2015/11/21 职场文书