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对img进行操作(换图片/切图/轮换/停止)
Apr 17 Javascript
各种页面定时跳转(倒计时跳转)代码总结
Oct 24 Javascript
JS动态调用方法名示例介绍
Dec 18 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
Sep 26 Javascript
JS+Canvas绘制时钟效果
Aug 20 Javascript
BootStrap中的table实现数据填充与分页应用小结
May 26 Javascript
关于Javascript中defer和async的区别总结
Sep 20 Javascript
微信小程序 登录实例详解
Jan 16 Javascript
JavaScript中附件预览功能实现详解(推荐)
Aug 15 Javascript
vue-cli中安装方法(图文详细步骤)
Dec 12 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 Javascript
vue单应用在ios系统中实现微信分享功能操作
Sep 07 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实用函数分享之去除多余的0
2015/02/06 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
详解python metaclass(元类)
2020/08/13 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
骨干教师培训感言
2014/01/16 职场文书
高中学生评语大全
2014/04/25 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
人事文员岗位职责
2015/02/04 职场文书
2015年度物流工作总结
2015/04/30 职场文书
党支部考察意见范文
2015/06/02 职场文书
商务宴会祝酒词
2015/08/11 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python