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

来源:互联网 发布:阿里云 个人 编辑:程序博客网 时间:2024/05/20 09:10

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

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

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


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


/** * 金额按千位逗号分割 * @character_set UTF-8 * @author Jerry.li(hzjerry@gmail.com) * @version 1.2014.08.24.2143 *  Example * <code> *      alert($.formatMoney(1234.345, 2)); //=>1,234.35 *      alert($.formatMoney(-1234.345, 2)); //=>-1,234.35 *      alert($.unformatMoney(1,234.345)); //=>1234.35 *      alert($.unformatMoney(-1,234.345)); //=>-1234.35 * </code> */;(function($){    $.extend({        /**         * 数字千分位格式化         * @public         * @param mixed mVal 数值         * @param int iAccuracy 小数位精度(默认为2)         * @return string         */        formatMoney:function(mVal, iAccuracy){            var fTmp = 0.00;//临时变量            var iFra = 0;//小数部分            var iInt = 0;//整数部分            var aBuf = new Array(); //输出缓存            var bPositive = true; //保存正负值标记(true:正数)            /**             * 输出定长字符串,不够补0             * <li>闭包函数</li>             * @param int iVal 值             * @param int iLen 输出的长度             */            function funZero(iVal, iLen){                var sTmp = iVal.toString();                var sBuf = new Array();                for(var i=0,iLoop=iLen-sTmp.length; i<iLoop; i++)                    sBuf.push('0');                sBuf.push(sTmp);                return sBuf.join('');            };            if (typeof(iAccuracy) === 'undefined')                iAccuracy = 2;            bPositive = (mVal >= 0);//取出正负号            fTmp = (isNaN(fTmp = parseFloat(mVal))) ? 0 : Math.abs(fTmp);//强制转换为绝对值数浮点            //所有内容用正数规则处理            iInt = parseInt(fTmp); //分离整数部分            iFra = parseInt((fTmp - iInt) * Math.pow(10,iAccuracy) + 0.5); //分离小数部分(四舍五入)            do{                aBuf.unshift(funZero(iInt % 1000, 3));            }while((iInt = parseInt(iInt/1000)));            aBuf[0] = parseInt(aBuf[0]).toString();//最高段区去掉前导0            return ((bPositive)?'':'-') + aBuf.join(',') +'.'+ ((0 === iFra)?'00':funZero(iFra, iAccuracy));        },        /**         * 将千分位格式的数字字符串转换为浮点数         * @public         * @param string sVal 数值字符串         * @return float         */        unformatMoney:function(sVal){            var fTmp = parseFloat(sVal.replace(/,/g, ''));            return (isNaN(fTmp) ? 0 : fTmp);        },    });})(jQuery);


0 0
原创粉丝点击