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

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

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

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


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


[javascript] view plain copy
  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.   
  45.             if (typeof(iAccuracy) === 'undefined')  
  46.                 iAccuracy = 2;  
  47.             bPositive = (mVal >= 0);//取出正负号  
  48.             fTmp = (isNaN(fTmp = parseFloat(mVal))) ? 0 : Math.abs(fTmp);//强制转换为绝对值数浮点  
  49.             //所有内容用正数规则处理  
  50.             iInt = parseInt(fTmp); //分离整数部分  
  51.             iFra = parseInt((fTmp - iInt) * Math.pow(10,iAccuracy) + 0.5); //分离小数部分(四舍五入)  
  52.   
  53.             do{  
  54.                 aBuf.unshift(funZero(iInt % 1000, 3));  
  55.             }while((iInt = parseInt(iInt/1000)));  
  56.             aBuf[0] = parseInt(aBuf[0]).toString();//最高段区去掉前导0  
  57.             return ((bPositive)?'':'-') + aBuf.join(',') +'.'+ ((0 === iFra)?'00':funZero(iFra, iAccuracy));  
  58.         },  
  59.         /** 
  60.          * 将千分位格式的数字字符串转换为浮点数 
  61.          * @public 
  62.          * @param string sVal 数值字符串 
  63.          * @return float 
  64.          */  
  65.         unformatMoney:function(sVal){  
  66.             var fTmp = parseFloat(sVal.replace(/,/g, ''));  
  67.             return (isNaN(fTmp) ? 0 : fTmp);  
  68.         },  
  69.     });  
  70. })(jQuery); 

http://blog.csdn.net/hzbigdog/article/details/38800813

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值