[PHP] Solde avec séparateur de milliers et 2 chiffres après la virgule

Solde avec séparateur de milliers et 2 chiffres après la virgule [PHP] - PHP - Programmation

Marsh Posté le 30-07-2007 à 15:48:42    

Salut !!
 
       J'essaie de mettre des séparateurs de milliers sur mes valeurs monétaires.
J'utilise d'habitude sprintf pour mettre en forme les nombres, mais pour faire ça, je ne suis pas sûr que ce soit possible :/
Jusque là (donc sans le séparateur de milliers) j'utilise cette méthode :  
$solde = sprintf("%1.2f",$solde);
 
Est-ce que qqun saurait ?
 :jap:


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 30-07-2007 à 15:48:42   

Reply

Marsh Posté le 30-07-2007 à 16:06:43    

Pourquoi ne pas utiliser number_format qui est un peu là pour ça ?

Reply

Marsh Posté le 30-07-2007 à 16:09:04    

naceroth a écrit :

Pourquoi ne pas utiliser number_format qui est un peu là pour ça ?


je ne connais, pas, je vais me renseigner là-dessus :jap:
 
 
edit: ça marche nickel !! [:spikler]  
$solde=number_format($solde , 2 , "," , " " );


Message édité par sire de Botcor le 30-07-2007 à 16:14:04

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 30-07-2007 à 16:44:43    

naceroth a écrit :

Pourquoi ne pas utiliser number_format qui est un peu là pour ça ?


Pourquoi ne pas utiliser money_format qui est un peu là pour ça ?

Reply

Marsh Posté le 30-07-2007 à 17:15:35    

anapajari a écrit :


Pourquoi ne pas utiliser money_format qui est un peu là pour ça ?


 
parce que j'évite des réponses dépendant de l'OS sur lequel tourne le serveur. Et au dernière nouvelle, money_format ne fonctionne pas sous windows  ;)  

Reply

Marsh Posté le 30-07-2007 à 17:27:25    

naceroth a écrit :

parce que j'évite des réponses dépendant de l'OS sur lequel tourne le serveur. Et au dernière nouvelle, money_format ne fonctionne pas sous windows  ;)  


c'est pas "aux dernières nouvelles" mais pour longtemps vu que money_format se base strfmon...
Mais si c'est utilisable, je trouve ça mieux que number_format :o
 

Reply

Marsh Posté le 08-08-2007 à 14:14:38    

Je reviens à la charge...
est-ce que vous connaissez un équivalent de number_format en javascript ? (le séparateur de milliers n'est pas indispensable)
 
merci :jap:


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 09-08-2007 à 12:58:09    

function format(valeur,decimal,separateur) {
// formate un chiffre avec 'decimal' chiffres après la virgule et un separateur
 var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ;  
 var val=Math.floor(Math.abs(valeur));
 if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
 var val_format=val+"";
 var nb=val_format.length;
 for (var i=1;i<4;i++) {
  if (val>=Math.pow(10,(3*i))) {
   val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
  }
 }
 if (decimal>0) {
  var decim="";  
  for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
  deci=decim+deci.toString();
  val_format=val_format+"."+deci;
 }
 if (parseFloat(valeur)<0) {val_format="-"+val_format;}
 return val_format;
}
 
function afficher() {
 var val=document.forms[0].elements["chiffre"].value;
 var deci=document.forms[0].elements["decimal"].value;
 document.forms[0].elements["resultat"].value=format(val,deci,document.forms[0].elements["liste"].options[document.forms[0].elements["liste"].selectedIndex].value);
}

Reply

Marsh Posté le 09-08-2007 à 13:50:53    

antac a écrit :

function format(valeur,decimal,separateur) {
// formate un chiffre avec 'decimal' chiffres après la virgule et un separateur
 var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ;  
 var val=Math.floor(Math.abs(valeur));
 if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
 var val_format=val+"";
 var nb=val_format.length;
 for (var i=1;i<4;i++) {
  if (val>=Math.pow(10,(3*i))) {
   val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
  }
 }
 if (decimal>0) {
  var decim="";  
  for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
  deci=decim+deci.toString();
  val_format=val_format+"."+deci;
 }
 if (parseFloat(valeur)<0) {val_format="-"+val_format;}
 return val_format;
}
 
function afficher() {
 var val=document.forms[0].elements["chiffre"].value;
 var deci=document.forms[0].elements["decimal"].value;
 document.forms[0].elements["resultat"].value=format(val,deci,document.forms[0].elements["liste"].options[document.forms[0].elements["liste"].selectedIndex].value);
}


Wow ! merci :jap:  
je vais regarder ça de plus près [:bob la jungle]


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 02-10-2007 à 10:52:48    

Bonjour
 
pour info  
 
y a un bug dans cette fonction.....si la valeur est : 0.999999999 et ben la fonction retroune 0.00 ... c'est bete....
 
voila

Reply

Marsh Posté le 02-10-2007 à 10:52:48   

Reply

Marsh Posté le 02-10-2007 à 12:00:52    

oui alors bon ... y'a une methode de la class Number qui fait ça très bien ( dans la mesure ou tu n'as pas besoin du séparateur des milliers).

Code :
  1. var num = 19.65743;
  2. alert(num.toFixed(2)); // affiche 19.66


 
 

Reply

Marsh Posté le 23-10-2007 à 16:00:51    

anapajari a écrit :

oui alors bon ... y'a une methode de la class Number qui fait ça très bien ( dans la mesure ou tu n'as pas besoin du séparateur des milliers).

Code :
  1. var num = 19.65743;
  2. alert(num.toFixed(2)); // affiche 19.66




ah oui, tiens, ça marche aussi :jap:


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed