扩展jQuery实现金额千分位计数

原创 Laughing  2017-06-30 21:36  阅读 81 次 评论 0 条

实现代码

  1. /* 
  2. * @character_set UTF-8  
  3. * @author Jerry.li(hzjerry@gmail.com)  
  4. * @version 1.2014.08.24.2143  
  5. *  Example  
  6. *  <code>  
  7. *      alert($.formatMoney(1234.345, 2)); //=>1,234.35  
  8. *      alert($.formatMoney(-1234.345, 2)); //=>-1,234.35  
  9. *      alert($.unformatMoney(1,234.345)); //=>1234.35  
  10. *      alert($.unformatMoney(-1,234.345)); //=>-1234.35  
  11. *  </code>  
  12. */    
  13. (function($)    
  14. {    
  15.     $.extend({    
  16.         /**  
  17.          * 数字千分位格式化  
  18.          * @public  
  19.          * @param mixed mVal 数值  
  20.          * @param int iAccuracy 小数位精度(默认为2)  
  21.          * @return string  
  22.          */    
  23.         formatMoney:function(mVal, iAccuracy){    
  24.             var fTmp = 0.00;//临时变量    
  25.             var iFra = 0;//小数部分    
  26.             var iInt = 0;//整数部分    
  27.             var aBuf = new Array(); //输出缓存    
  28.             var bPositive = true//保存正负值标记(true:正数)    
  29.             /**  
  30.              * 输出定长字符串,不够补0  
  31.              * <li>闭包函数</li>  
  32.              * @param int iVal 值  
  33.              * @param int iLen 输出的长度  
  34.              */    
  35.             function funZero(iVal, iLen){    
  36.                 var sTmp = iVal.toString();    
  37.                 var sBuf = new Array();    
  38.                 for(var i=0,iLoop=iLen-sTmp.length; i<iLoop; i++)    
  39.                     sBuf.push('0');    
  40.                 sBuf.push(sTmp);    
  41.                 return sBuf.join('');    
  42.             };    
  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.     
  52.             do{    
  53.                 aBuf.unshift(funZero(iInt % 1000, 3));    
  54.             }while((iInt = parseInt(iInt/1000)));    
  55.             aBuf[0] = parseInt(aBuf[0]).toString();//最高段区去掉前导0    
  56.             return ((bPositive)?'':'-') + aBuf.join(',') +'.'+ ((0 === iFra)?'00':funZero(iFra, iAccuracy));    
  57.         },    
  58.         /**  
  59.          * 将千分位格式的数字字符串转换为浮点数  
  60.          * @public  
  61.          * @param string sVal 数值字符串  
  62.          * @return float  
  63.          */    
  64.         unformatMoney:function(sVal){    
  65.             var fTmp = parseFloat(sVal.replace(/,/g, ''));    
  66.             return (isNaN(fTmp) ? 0 : fTmp);    
  67.         },    
  68.     });    
  69. })(jQuery);   
本文地址:https://www.lisen.me/extend-jquery-implementation-amount-micrometer-a-count.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情