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 相关文章推荐
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
Oct 29 Javascript
jQuery lazyload 的重复加载错误以及修复方法
Nov 19 Javascript
node.js中的fs.writeFileSync方法使用说明
Dec 14 Javascript
jQuery实现动态添加和删除一个div
Aug 12 Javascript
JS正则表达式比较常见用法
Jan 26 Javascript
javascript实现任务栏消息提示的简单实例
May 31 Javascript
angular 基于ng-messages的表单验证实例
May 04 Javascript
Vue-router 类似Vuex实现组件化开发的示例
Sep 15 Javascript
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
微信小程序实现上传图片裁剪图片过程解析
Aug 22 Javascript
d3.js 地铁轨道交通项目实战
Nov 27 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 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+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
python字符串的index和find的区别详解
2020/06/20 Python
美国购车网站:TrueCar
2016/10/19 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
事业单位个人应聘自荐信
2013/09/21 职场文书
饲料采购员岗位职责
2013/12/19 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
土地转让协议书
2014/04/15 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
全国文明单位申报材料
2014/05/31 职场文书
工商管理本科生求职信
2014/07/13 职场文书
学习保证书
2015/01/17 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书