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中的其他对象
Jan 16 Javascript
JavaScript 设计模式学习 Singleton
Jul 27 Javascript
jquery下json数组的操作实现代码
Aug 09 Javascript
js编码、解码函数介绍及其使用示例
Sep 05 Javascript
JS实现清除指定cookies的方法
Sep 20 Javascript
浅谈Jquery为元素绑定事件
Apr 27 Javascript
js实现兼容IE和FF的上下层的移动
May 04 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
May 19 Javascript
Angular4 Select选择改变事件的方法
Oct 09 Javascript
详解ES6中的Map与Set集合
Mar 22 Javascript
解决vue项目获取dom元素宽高总是不准确问题
Jul 29 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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
如何获得PHP相关资料
2006/10/09 PHP
smarty缓存用法分析
2014/12/16 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Python笔记(叁)继续学习
2012/10/24 Python
python中列表和元组的区别
2017/12/18 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
自动化系在校本科生求职信
2013/10/23 职场文书
个人收入证明范本
2014/01/12 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
单位计划生育责任书
2015/05/09 职场文书
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS