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 相关文章推荐
短信提示使用 特效
Jan 19 Javascript
JavaScript 函数replace深入了解
Mar 14 Javascript
有关于JS辅助函数inherit()的问题
Apr 07 Javascript
jquery实现手机发送验证码的倒计时代码
Feb 12 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
Jun 06 Javascript
基于jQuery实现仿百度首页选项卡切换效果
May 29 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
根据Bootstrap Paginator改写的js分页插件
Dec 25 Javascript
HTML5 js实现拖拉上传文件功能
Nov 20 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
详解webpack4升级指南以及从webpack3.x迁移
Jun 12 Javascript
浅谈webpack 四个核心概念之Entry
Jun 12 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数据流应用的一个简单实例
2012/09/14 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
js获得鼠标的坐标值的方法
2013/03/13 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
详解js闭包
2014/09/02 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
Python实现统计单词出现的个数
2015/05/28 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
Linux文件操作命令都有哪些
2016/07/23 面试题
英语专业应届生求职信范文
2013/11/15 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
大学军训感言1500字
2014/03/09 职场文书
同学聚会策划方案
2014/06/06 职场文书
见习报告的格式
2014/10/31 职场文书
婚前保证书范文
2015/02/28 职场文书
水浒传读书笔记
2015/06/25 职场文书
施工现场安全管理制度
2015/08/05 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python