js经典实例-JS对货币格式化函数(高级篇)

【实例代码】:

var Number = {
	/**
	 * 将数值四舍五入(保留2位小数)后格式化成金额形式
	 * 
	 * @param num
	 *            数值(Number或者String)
	 * @return 金额格式的字符串,如'1,234,567.45'
	 * @type String
	 */
	formatCurrency2:function(num){
		if(!num || isNaN(num)){
			num ="0.00";
		}
		 num = num.toString().replace(/\$|\,/g,'');
		 sign =(num ==(num =Math.abs(num)));
		 num =Math.floor(num*100+0.50000000001);
		 cents = num%100;
		 num = Math.floor(num/100).toString();if(cents<10)
		 cents ="0"+ cents;
		 for(var i =0; i <Math.floor((num.length-(1+i))/3); i++){
			num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
		 }
		 return(((sign)?'':'-')+ num +'.'+ cents);
	},

	/**
	 * 将数值四舍五入(保留1位小数)后格式化成金额形式
	 * 
	 * @param num
	 *            数值(Number或者String)
	 * @return 金额格式的字符串,如'1,234,567.4'
	 * @type String
	 */
	formatCurrency1:function(num){
		if(!num || isNaN(num)){
			num ="0.0";
		}
		num = num.toString().replace(/\$|\,/g,'');
		sign =(num ==(num =Math.abs(num)));
		num =Math.floor(num*10+0.50000000001);
		cents = num%10;
		num =Math.floor(num/10).toString();
		for(var i =0; i <Math.floor((num.length-(1+i))/3); i++){
			num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
		}
		return(((sign)?'':'-')+ num +'.'+ cents);
	},
	formatCurrency:function(num){
		if(!num || isNaN(num)){
			num ="0.00";
		}
		var t = num, i, r;debugger;
		for( t = t.toString().replace(/^(\d*)$/,"$1."), t =(t +"00").replace(/(\d*\.\d\d)\d*/,"$1"), t = t.replace(".",","), i =/(\d)(\d{3},)/; i.test(t);){
			t = t.replace(i,"$1,$2");
		}
		return t = t.replace(/,(\d\d)$/,".$1"), r = t.split("."), r[1]=="00"&&(t = r[0]), t 
	}
};

【测试代码】:

console.info(Number.formatCurrency2(123232));
console.info(Number.formatCurrency2());
console.info(Number.formatCurrency2(''));
console.info(Number.formatCurrency2(""));
console.info(Number.formatCurrency1(123232));
console.info(Number.formatCurrency1());
console.info(Number.formatCurrency1(''));
console.info(Number.formatCurrency1(""));
console.info(Number.formatCurrency(123232.999));
console.info(Number.formatCurrency());
console.info(Number.formatCurrency(''));
console.info(Number.formatCurrency(""));

【打印结果】:

123,232.00
0.00
0.00
0.00
123,232.0
0.0
0.0
0.0
123,232.99
0.00
0.00
0.00

捐助分享者

          以前并不喜欢编程,但是现在已经是一个为程序而痴迷的IT迷,在此分享一些自己整理并优化后的东西,希望能给IT迷们有所帮助,有欣喜,也还有汗水,同时也希望大家能支持一下。 当然,有钱捧个钱场(支持支付宝和微信捐助,加入it资料中心扣扣群),没钱捧个人场,有了大家的支持,我们会更有动力,会做的更好的,谢谢各位。

猜你喜欢

转载自itdatacenter.iteye.com/blog/2375726