Javascript将数字转化成为货币格式字符串


Posted in Javascript onJune 22, 2016

这里第一个方法是用JavaScript将数字number转换为货币字符串的格式(参数:保留小数位数,货币符号,整数部分千位分隔符,小数分隔符)

这里第二个方法是用简单的正则表达式将货币字符换转换为纯净的数字字符串,之后便可以将字符串转换为数字number
JavaScript Money Format(用prototype对Number进行扩展)

// Extend the default Number object with a formatMoney() method:
// usage: someVar.formatMoney(decimalPlaces, symbol, thousandsSeparator, decimalSeparator)
// defaults: (2, "$", ",", ".")
Number.prototype.formatMoney = function (places, symbol, thousand, decimal) {
  places = !isNaN(places = Math.abs(places)) ? places : 2;
  symbol = symbol !== undefined ? symbol : "$";
  thousand = thousand || ",";
  decimal = decimal || ".";
  var number = this,
    negative = number < 0 ? "-" : "",
    i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
    j = (j = i.length) > 3 ? j % 3 : 0;
  return symbol + negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "");
};

如下便是一些转换实例:

// Default usage and custom precision/symbol :
var revenue = 12345678;
alert(revenue.formatMoney()); // $12,345,678.00
alert(revenue.formatMoney(0, "HK$ ")); // HK$ 12,345,678

// European formatting:
var price = 4999.99;
alert(price.formatMoney(2, "?", ".", ",")); // ?4.999,99

// It works for negative values, too:
alert((-500000).formatMoney(0, "£ ")); // £ -500,000

Currency to number ? removing money formatting (用正则表达式进行过滤)

var price = (12345.99).formatMoney(); // "$12,345.99"

// Remove non-numeric chars (except decimal point/minus sign):
priceVal = parseFloat(price.replace(/[^0-9-.]/g, '')); // 12345.99

这个方法仅仅应用于小数分隔符为"."的模式,如果小数分隔符是"," 那么正则表达式为/[^0-9-,]/g

 不用prototype对Number进行拓展的版本:

// To set it up as a global function:
function formatMoney(number, places, symbol, thousand, decimal) {
  number = number || 0;
  places = !isNaN(places = Math.abs(places)) ? places : 2;
  symbol = symbol !== undefined ? symbol : "$";
  thousand = thousand || ",";
  decimal = decimal || ".";
  var negative = number < 0 ? "-" : "",
    i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
    j = (j = i.length) > 3 ? j % 3 : 0;
  return symbol + negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "");
}

// To create it as a library method:
myLibrary.formatMoney = function (number, places, symbol, thousand, decimal) {
  /* as above */
}

// Example usage:
formatMoney(54321); // $54,321
myLibrary.formatMoney(12345, 0, "£ "); // £ 12,345

以上就是本文的全部内容,了解更多JavaScript的语法,大家可以查看:《JavaScript 参考教程》、《JavaScript代码风格指南》,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js单词形式的运算符
May 06 Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 Javascript
AngularJS directive返回对象属性详解
Mar 28 Javascript
巧用jQuery选择器提高写表单效率的方法
Aug 19 Javascript
jQuery的Read()方法代替原生JS详解
Nov 08 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
JavaScript对象_动力节点Java学院整理
Jun 23 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
Oct 30 Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 Javascript
微信小程序实现bindtap等事件传参
Apr 08 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
May 28 Javascript
JavaScript实现筛选数组
Mar 02 Javascript
jQuery soColorPacker 网页拾色器
Jun 22 #Javascript
DIV+CSS+jQ实现省市联动可扩展
Jun 22 #Javascript
Javascript对象字面量的理解
Jun 22 #Javascript
Javascript闭包与函数柯里化浅析
Jun 22 #Javascript
JS中innerHTML和pasteHTML的区别实例分析
Jun 22 #Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
Jun 22 #Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 #Javascript
You might like
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
AngularJS 过滤器(自带和自建)详解
2016/09/19 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
微信小程序如何获取用户信息
2018/01/26 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
深圳茁壮笔试题
2015/05/28 面试题
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
测绘工程专业个人自我评价
2013/12/01 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android