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 相关文章推荐
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
Mar 24 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
Jul 20 Javascript
JavaScript输入邮箱自动提示实例代码
Jan 13 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 Javascript
jquery实现相册一下滑动两次的方法
Feb 09 Javascript
js实现延时加载Flash的方法
Nov 26 Javascript
js跨域请求数据的3种常用的方法
Dec 01 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
Aug 09 Javascript
详解http访问解析流程原理
Oct 18 Javascript
angularjs结合html5实现拖拽功能
Jun 25 Javascript
vue实现动态按钮功能
May 13 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 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
图书管理程序(二)
2006/10/09 PHP
php xfocus防注入资料
2008/04/27 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
javascript new fun的执行过程
2010/08/05 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
为python设置socket代理的方法
2015/01/14 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
面试后感谢信
2014/02/01 职场文书
荷叶圆圆教学反思
2014/02/01 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
暑假安全保证书
2015/02/28 职场文书
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL
Python的property属性详细讲解
2022/04/11 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis