Bonjour,
existe-t-il une fonction permettant de formater un nombre comme le ferait number_format() en PHP ?
je ne veux pas seulement arrondir le nombre, je veux pouvoir définir le séparateur décimal, le nombre de décimales et le séparateur de milliers.
Cette fonction doit donc renvoyer une chaine de caracteres.
en cherchant () , j'ai trouvé ceci :
essayez donc avec les valeurs suivantes :
0.99
0.995 => Probleme !!
voici la fonction :
pour résoudre le bug, j'ai tenté :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function format(valeur,decimal,separateur,virgule) { 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+virgule+deci; } if (parseFloat(valeur)<0) {val_format="-"+val_format;} return val_format; }
ca a l'air de marcher, néanmoins, je suis pas serein.. j'ai pas testé tous les cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 function format(valeur,decimal,separateur,virgule) { var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ; //MON AJOUT if (deci == Math.pow(10,decimal)) { valeur=parseFloat(valeur)+1; } //FIN MON AJOUT 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+virgule+deci; } if (parseFloat(valeur)<0) {val_format="-"+val_format;} return val_format; }
Qu'est-ce que vous utilisez pour formater un nombre pour l'affichage ?
merci
Partager