没想到js里面没有 金额千分位格式化的处理函数(例:1,234.01 这样的格式),网上搜了一圈,都是使用正则的方式处理的。正则的效率不敢恭维啊,又耗费资源速度又慢(虽然处理起来会直观一些)。

因此专门写了一个纯数值处理最后输出字符串个 金额千分位处理函数,并封装成jQuery函数包,处理时效率很高,可高频率的使用,直接上代码。还有min压缩版本可点击连接下载。

如果你不是jQuery环境,直接把源码拿出来,重新封装到自己的函数中能够就能用。

源码以及min包下载地址:jQuery.formatMoney.rar

  1. /**
  2. * 金额按千位逗号分割
  3. * @character_set UTF-8
  4. * @author Jerry.li(hzjerry@gmail.com)
  5. * @version 1.2014.08.24.2143
  6. *  Example
  7. *  <code>
  8. *      alert($.formatMoney(1234.345, 2)); //=>1,234.35
  9. *      alert($.formatMoney(-1234.345, 2)); //=>-1,234.35
  10. *      alert($.unformatMoney(1,234.345)); //=>1234.35
  11. *      alert($.unformatMoney(-1,234.345)); //=>-1234.35
  12. *  </code>
  13. */
  14. ;(function($)
  15. {
  16. $.extend({
  17. /**
  18. * 数字千分位格式化
  19. * @public
  20. * @param mixed mVal 数值
  21. * @param int iAccuracy 小数位精度(默认为2)
  22. * @return string
  23. */
  24. formatMoney:function(mVal, iAccuracy){
  25. var fTmp = 0.00;//临时变量
  26. var iFra = 0;//小数部分
  27. var iInt = 0;//整数部分
  28. var aBuf = new Array(); //输出缓存
  29. var bPositive = true; //保存正负值标记(true:正数)
  30. /**
  31. * 输出定长字符串,不够补0
  32. * <li>闭包函数</li>
  33. * @param int iVal 值
  34. * @param int iLen 输出的长度
  35. */
  36. function funZero(iVal, iLen){
  37. var sTmp = iVal.toString();
  38. var sBuf = new Array();
  39. for(var i=0,iLoop=iLen-sTmp.length; i<iLoop; i++)
  40. sBuf.push('0');
  41. sBuf.push(sTmp);
  42. return sBuf.join('');
  43. };
  44. if (typeof(iAccuracy) === 'undefined')
  45. iAccuracy = 2;
  46. bPositive = (mVal >= 0);//取出正负号
  47. fTmp = (isNaN(fTmp = parseFloat(mVal))) ? 0 : Math.abs(fTmp);//强制转换为绝对值数浮点
  48. //所有内容用正数规则处理
  49. iInt = parseInt(fTmp); //分离整数部分
  50. iFra = parseInt((fTmp - iInt) * Math.pow(10,iAccuracy) + 0.5); //分离小数部分(四舍五入)
  51. do{
  52. aBuf.unshift(funZero(iInt % 1000, 3));
  53. }while((iInt = parseInt(iInt/1000)));
  54. aBuf[0] = parseInt(aBuf[0]).toString();//最高段区去掉前导0
  55. return ((bPositive)?'':'-') + aBuf.join(',') +'.'+ ((0 === iFra)?'00':funZero(iFra, iAccuracy));
  56. },
  57. /**
  58. * 将千分位格式的数字字符串转换为浮点数
  59. * @public
  60. * @param string sVal 数值字符串
  61. * @return float
  62. */
  63. unformatMoney:function(sVal){
  64. var fTmp = parseFloat(sVal.replace(/,/g, ''));
  65. return (isNaN(fTmp) ? 0 : fTmp);
  66. },
  67. });
  68. })(jQuery);

js jquery版本的 金额千分位转换函数(非正则,效率极高)的更多相关文章

  1. [js开源组件开发]数字或金额千分位格式化组件

    数字或金额千分位格式化组件 这次距离上一个组件<[js开源组件开发]table表格组件>时隔了一个月,由于最近的项目比较坑,刚挖完坑,所以来总结性提出来几个组件弥补这次的空缺,首先是金额和 ...

  2. JS/Jquery版本的俄罗斯方块(附源码分析)

    转载于http://blog.csdn.net/unionline/article/details/63250597 且后续更新于此 1.前言 写这个jQuery版本的小游戏的缘由在于我想通过从零到有 ...

  3. js千分位的函数

    不错的js千分位函数,适用于将金额每3位用“,”分隔 /*for price using thousands separator */ function fprice(s,n){ s = parseF ...

  4. 前端(js/jquery) 日期和时间戳的转换

    一.JavaScript中获取当前时间的时间戳 方法一: var timestamp=Date.parse(new Date()); ====>结果是:1451441086000 注:这种方式精 ...

  5. js数字格式化(加千分位逗号)

    需求:当金额大于10000时,在作展示的时候,需要加千分位逗号,就是每隔1000要用逗号分隔: 方法一:使用toLocaleString()方法 此方法和toString()方法的区别看这里 < ...

  6. JS方法:数字转换为千分位字符

    /** * 数字转为千分位字符 * @param {Number} num * @param {Number} point 保留几位小数,默认2位 */ function parseToThousan ...

  7. js千分位转换

    var money = 1234567.55; var sMoney = money.toLocaleString(); console.info(sMoney); console.info(pars ...

  8. 【JS】toLocaleString 日期格式,千分位转换

    https://blog.csdn.net/Seven521m/article/details/108866881 类似于c里printf(m%)的意思 可以指定整数最少位数,小数最少与最多位数,有效 ...

  9. JS返回一个数据的千分位格式

    /** * 价钱转换-从右往左每3位数字加一个逗号 * @param price 需要转换的价格 */ formatPrice(price){ var newPrice = price.split(' ...

随机推荐

  1. PL/SQL中如何执行DDL、SCL?

    PL/SQL程序中不能直接执行DDL语句.为什么? 假设我们在pl/sql程序中有这样的一条DDL语句—— drop table emp:在第一次解析pl/sql中的“drop table emp;” ...

  2. Linux命令执行顺序— ||和&&和;

    command1 && command2: &&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行. comman ...

  3. 元类metaClass

    metaClass 实现动态改变对象的能力,这点特别像python(metaClass),Python中类(不是元类)的概念借鉴于Smalltalk groovy demo: class Person ...

  4. Linux配置Tomcat(转载)

    转载自:http://www.cnblogs.com/zhoulf/archive/2013/02/04/2891633.html 安装说明 安装环境:CentOS-6.3安装方式:源码安装 软件:a ...

  5. WebApi中帮助页Description的中文显示

    转自:http://edi.wang/post/2013/10/28/auto-generate-help-document-aspnet-webapi 我选择Web API的一个重要原因就是因为可以 ...

  6. easy ui 表单提交添加遮罩,避免数据重复提交

    如下图: //点击提交按钮保存数据 $('#btn_submit').click(function () { //增加遮罩层 $.messager.progress({ title: '温馨提示', ...

  7. Java字符串之性能优化

    基础类型转化成String 在程序中你可能时常会需要将别的类型转化成String,有时候可能是一些基础类型的值.在拼接字符串的时候,如果你有两个或者多个基础类型的值需要放到前面,你需要显式的将第一个值 ...

  8. iOS的view翻转动画实现--代码老,供参考

    新建一个view-based模板工程,在ViewController文件中添加下面的代码,即可实现翻转效果: - (void)viewDidLoad { [super viewDidLoad]; // ...

  9. gif格式的图片不能存在与包含js目录的路径中?

    如题:gif格式的图片不能存在与包含js目录的路径中?是我的设置问题?还是真不能存在于js目录中. 今天纠结了一下午,某个项目中的效果就是出不来,找了差不多两个半小时... 在D盘新建一个js和jss ...

  10. 1017: [JSOI2008]魔兽地图DotR - BZOJ

    Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Anc ...