zoukankan      html  css  js  c++  java
  • 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);  
    我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他 们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其 实我是一个程序员
  • 相关阅读:
    HDU 1874 畅通工程续(dijkstra)
    HDU 2112 HDU Today (map函数,dijkstra最短路径)
    HDU 2680 Choose the best route(dijkstra)
    HDU 2066 一个人的旅行(最短路径,dijkstra)
    关于测评机,编译器,我有些话想说
    测评机的优化问题 时间控制
    CF Round410 D. Mike and distribution
    数字三角形2 (取模)
    CF Round410 C. Mike and gcd problem
    CF Round 423 D. High Load 星图(最优最简构建)
  • 原文地址:https://www.cnblogs.com/kms1989/p/5283275.html
Copyright © 2011-2022 走看看