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在IE和FireFox之间常用函数的区别小结
Mar 12 Javascript
JavaScript中的一些定位属性[图解]
Jul 14 Javascript
基于jquery的跨域调用文件
Nov 19 Javascript
js获取某月的最后一天日期的简单实例
Jun 22 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
Oct 28 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
vue 2.0路由之路由嵌套示例详解
May 08 Javascript
Nuxt.js踩坑总结分享
Jan 18 Javascript
详解为生产环境编译Angular2应用的方法
Dec 10 Javascript
node 标准输入流和输出流代码实例
Sep 19 Javascript
微信小程序实现录音功能
Nov 22 Javascript
ES6学习笔记之let与const用法实例分析
Jan 22 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php设置页面超时时间解决方法
2015/09/22 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
YII框架常用技巧总结
2019/04/27 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
解决Mac下使用python的坑
2019/08/13 Python
python打包成so文件过程解析
2019/09/28 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
城管大队整治方案
2014/05/06 职场文书
AJAX学习笔记
2021/05/18 Javascript
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫