Formatage de nombre dans une chaine de caractères

webTopaze Messages postés 2 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 6 novembre 2005 - 5 nov. 2005 à 03:59
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 - 6 nov. 2005 à 22:09
Bonjour, je cherche comment faire un affichage formaté d'un nombre dans un champ texte dynamique...

J'ai des nombres de grandes valeurs à afficher, et je désire simplement
faire en sorte que ceux-ci soient affichés avec des séparateurs de
milliers

3 réponses

atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
6 nov. 2005 à 14:43
Bonjour, je te donnes le code mais essaye de l'étudier plutôt que de faire un simple copier/coller.
Le principe est de convertir le nombre en String, de le découper avec split() et de regrouper les caractères 3 par 3 puis de rajouter les points

this.grandNombre = new Number(2321565412154);
this.nombreString = this.grandNombre.toString();
this.array = new Array();
this.array = this.nombreString.split("");
this.array2 = new Array();
var limite = Math.ceil(this.array.length/3)
for(var i=0;i<limite;i++)
{
this.array2[i] = new String();
if((this.array.length)-3*i-2>0)
{
this.array2[i] = this.array[(this.array.length)-3*i-3] + this.array[(this.array.length)-3*i-2] + this.array[(this.array.length)-3*i-1];
}
else if((this.array.length)-3*i-1>0)
{
this.array2[i] = this.array[(this.array.length)-3*i-2] + this.array[(this.array.length)-3*i-1];
}
else
{
this.array2[i] = this.array[(this.array.length)-3*i-1];
}
}
this.numberFormaté = new String();
for(var i=0;i<this.array2.length;i++)
{
this.numberFormaté += this.array2[this.array2.length-i-1];
if(i <> this.array2.length-1)
{
this.numberFormaté += ".";
}
}
trace(this.numberFormaté);

bon courage :p
0
webTopaze Messages postés 2 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 6 novembre 2005
6 nov. 2005 à 21:46
Merci beaucoup Atchoumdu51,
C'est à peux près ce que j'ai fait en attendant une réponce sur le
Forum à ceci près que j'ai simplement travaillé sur les longueurs de la
chaine et les portions de chaines, le chiffre à traiter ne risquant pas
de dépacer les 100.000.000 ...



Pour le copier/coller, tu a
tout à fait raison, beaucoups trops de bricoleurs se contentent de
placer des scripts et des portions de codes sans se donner la peine de
les analyser pour comprendre et apprendre.






J'esperais simplement qu'il y aie une fonction existante dans le genre de
sprintf 
en PHP. J'ai cherché dans le dictionnaire d'Action-Script, mais je n'avais rien trouvé de pertinant.





<hr size="2" width="100%">Pour ceux qui serraint interressés, voici ma
version (Ca donne, avec le script de Atchoumdu51, deux approches
possibles du problème)...

kilometrique = _root.Dist3.toString();

if (kilometrique.length>3) {

kilometrique = kilometrique.substring(0,
(kilometrique.length-3))+"."+kilometrique.substring((kilometrique.length-3),
(kilometrique.length));

}

if (kilometrique.length>7) {

kilometrique = kilometrique.substring(0,
(kilometrique.length-7))+"."+kilometrique.substring((kilometrique.length-7),
(kilometrique.length));

}

_root.distance.text = kilometrique+" Km";


<hr size="2" width="100%">
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
6 nov. 2005 à 22:09
Oui ca pourrait être utile une petite fonction comme ca, c'est toujours possible de la rajouter soi même (en mettant quelques fonctionalités) et ajoutant à une class. Pour la présentation de données ca pourrait être cool mais il faudrait aussi prévoir une fonction qui fasse l'inverse (texte formaté => nombre). Moi je vais me documenter sur subString()...

Bon courage
0
Rejoignez-nous