• 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);  
    我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他 们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其 实我是一个程序员
  • 相关阅读:
    使用jquery获取url以及jquery获取url参数的方法(转)
    Css3 选择器
    取出表A中第31到第40记录
    C#统计给定的文本中字符出现的次数,使用循环和递归两种方法
    Selenium 的页面加载以及几种等待的问题
    Selenium定位策略
    为什么一个java源文件中只能有一个public类
    Eclipse在线安装插件进度缓慢问题
    2.6.2 XML配置:使用testNG进行并发多浏览器测试
    ie11 selenium 报错org.openqa.selenium.NoSuchWindowException: Unable to get browser 处理方法
  • 原文地址:https://www.cnblogs.com/kms1989/p/5283275.html
Copyright © 2020-2023  润新知