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 相关文章推荐
Maps Javascript
Jan 22 Javascript
js href的用法
May 13 Javascript
前台js改变Session的值(用ajax实现)
Dec 28 Javascript
js实现省市联动效果的简单实例
Feb 10 Javascript
JS脚本实现动态给标签控件添加事件的方法
Jun 02 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
Aug 02 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
Aug 25 Javascript
js判断所有表单项不为空则提交表单的实现方法
Sep 09 Javascript
Angular1.x自定义指令实例详解
Mar 01 Javascript
vue组件 $children,$refs,$parent的使用详解
Jul 31 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
Jul 10 Javascript
Element InputNumber计数器的使用方法
Jul 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
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
php时间戳转换的示例
2014/03/31 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
JavaScript创建对象的写法
2013/08/29 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python基础教程之基本内置数据类型介绍
2014/02/20 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
性能服装:HYLETE
2018/08/14 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
团代会主持词
2014/04/02 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
校长师德表现自我评价
2015/03/04 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
SpringBoot整合Minio文件存储
2022/04/03 Java/Android