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 相关文章推荐
向fckeditor编辑器插入指定代码的方法
May 25 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
Apr 05 Javascript
js中的replace方法使用介绍
Oct 28 Javascript
JavaScript 动态加载脚本和样式的方法
Apr 13 Javascript
jQuery简单操作cookie的插件实例
Jan 13 Javascript
jQuery获取cookie值及删除cookie用法实例
Apr 15 Javascript
React创建组件的三种方式及其区别
Jan 12 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
Apr 13 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
Jun 21 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
Dec 13 Javascript
axios 实现post请求时把对象obj数据转为formdata
Oct 31 Javascript
JS + HTML 罗盘式时钟的实现
May 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
PHP聊天室技术
2006/10/09 PHP
php curl基本操作详解
2013/07/23 PHP
php调用c接口无错版介绍
2014/03/11 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
python插入排序算法实例分析
2015/07/03 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
维也纳通行证:Vienna PASS
2019/07/18 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
出纳岗位职责
2015/01/31 职场文书
置业顾问岗位职责
2015/02/09 职场文书
微信搭讪开场白
2015/05/28 职场文书
运动会新闻稿
2015/07/17 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
python保存图片的四个常用方法
2022/02/28 Python