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); }