Главная > Javascript > javascript: аналог number_format

javascript: аналог number_format

function number_format(number,decimals,dec_point,thousands_sep){
	number=(number+'').replace(/[^0-9+\-Ee.]/g,'');
	var n=!isFinite(+number)?0:+number,
	prec=!isFinite(+decimals)?0:Math.abs(decimals),
	sep=(typeof thousands_sep==='undefined')?',':thousands_sep,
	dec=(typeof dec_point==='undefined')?'.':dec_point,
	s='',
	toFixedFix=function(n,prec){
		var k=Math.pow(10,prec);
		return ''+Math.round(n*k)/k;
	};
	s=(prec?toFixedFix(n,prec):''+Math.round(n)).split('.');
	if(s[0].length>3){
		s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,sep);
	}
	if((s[1]||'').length<prec){
		s[1]=s[1]||'';
		s[1]+=new Array(prec-s[1].length+1).join('0');
	}
	return s.join(dec);
}

Добавлено:
Еще варианты:

function number_format(str){
	return str.replace(/(\s)+/g,'').replace(/(\d{1,3})(?=(?:\d{3})+$)/g,'$1 ');
}
function number_format(number,decimals,dec_point,thousands_sep){
	var i,j,kw,kd,km;
	if(isNaN(decimals=Math.abs(decimals))){
		decimals=2;
	}
	if(dec_point==undefined){
		dec_point=",";
	}
	if(thousands_sep==undefined){
		thousands_sep=".";
	}
	i=parseInt(number=(+number||0).toFixed(decimals))+"";
	if((j=i.length)>3){
		j=j%3;
	}else{
		j=0;
	}
	km=(j?i.substr(0,j)+thousands_sep:"");
	kw=i.substr(j).replace(/(\d{3})(?=\d)/g,"$1"+thousands_sep);
	kd=(decimals?dec_point+Math.abs(number-i).toFixed(decimals).replace(/-/,0).slice(2):"");
	return km+kw+kd;
}

Почти как первый (не проверен):

function number_format(number,decimals,dec_point,thousands_sep){
	number=(number+'').replace(/[^0-9+\-Ee.]/g,'');
	var n=!isFinite(+number)?0:+number,
	prec=!isFinite(+decimals)?0:Math.abs(decimals),
	sep=(typeof thousands_sep==='undefined')?',':thousands_sep,
	dec=(typeof dec_point==='undefined')?'.':dec_point,
	s='',
	toFixedFix=function(n,prec){
		var k=Math.pow(10,prec);
		return ''+(Math.round(n*k)/k).toFixed(prec);
	};
	s=(prec?toFixedFix(n,prec):''+Math.round(n)).split('.');
	if(s[0].length>3){
		s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,sep);
	}
	if((s[1]||'').length<prec){
		s[1]=s[1]||'';
		s[1]+=new Array(prec-s[1].length+1).join('0');
	}
	return s.join(dec);
}
Categories: Javascript Tags:
  1. Пока что нет комментариев.
Похожие публикации