Mise en forme des nombres au format monétaire --Javascipt format money

Pour mettre formater un n nombre au format monétaire voir la séparation des décimales des milliers des millions et plus et tenir compte des formats locaux comme les symboles monétaires préfixe ou suffixe utiliser la virgule pour séparer les décimales ou le point le nombre de chiffre après la virgule ...... Javascript ne fournit pas de méthodes directes pour ce besoin cependant , il existe des méthodes de traitement des nombre assez utile dans ces cas comme:
toFixed qui nous permet de limiter le nombre de décimales
Number.toLocaleString qui permet entre autre d 'afficher la virgule ou le point pour le séparateur de décimales
Bien même ces méthodes ca ne répond pas a notre besoin qui est de mettre les nombre au format monétaire voir (symbole)n nnn nnn ,nnnnnn(symbole)
il existe bien des plugins des librairie Javascript qui fournissent ces fonctionnalités . Mais je trouve que cette tache est bien plus simple pour inclure une librairie
Pour ca je propose cette fonction:
function formatMoney(num , localize,fixedDecimalLength){
          num=num+"";
   var str=num;
          var reg=new RegExp(/(\D*)(\d*(?:[\.|,]\d*)*)(\D*)/g)
          if(reg.test(num)){ 
       var pref=RegExp.$1;
       var suf=RegExp.$3;
       var part=RegExp.$2;
             if(fixedDecimalLength/1)part=(part/1).toFixed(fixedDecimalLength/1);
      if(localize)part=(part/1).toLocaleString();
str= pref +part.match(/(\d{1,3}(?:[\.|,]\d*)?)(?=(\d{3}(?:[\.|,]\d*)?)*$)/g ).join(' ')+suf ;
     };
  return str;
}
Voici quelques tests
formatMoney(5879);
//5 879
formatMoney(5879.158);
//5 879.158
formatMoney(5948794875358.158);
//5 948 794 875 358.158
formatMoney(5948794875358.158,true, 2)
//5 948 794 875 358,16
formatMoney("5948794875358.158")
//5 948 794 875 358.158
formatMoney("5948794875358.158€")
//5 948 794 875 358.158€
formatMoney("$5948794875358.158")
//$5 948 794 875 358.158
formatMoney("USD5948794875358.158")
//USD5 948 794 875 358.158
formatMoney(-5948794875358.158)
//-5 948 794 875 358.158










Cette méthodes est basée sur les expression régulière pour délimiter les séparation elle tient compte du fait qu on puisse ajouter des symboles monétaire avant et prés de l'usage de la virgule ou du point pour les décimale et bien sure de arrondi et réduction des décimales

1 commentaires: