Séparer les milliers

knone Messages postés 21 Date d'inscription mardi 24 août 2004 Statut Membre Dernière intervention 2 mai 2005 - 14 avril 2005 à 17:56
cs_hdh Messages postés 140 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 août 2012 - 18 juil. 2007 à 15:17
Bonjour j aimerai pouvoir séparer les milliers pour faciliter la lecture
exemple :
que 1200000000 devienne 1 200 000 000
soit séparé par un espace soit par '
j ai pensé a faire une fonction mais je ne vois pas trop quoi mettre

function sep(x) {
// la il s agit de mettre ma suite de chiffre en string
// puis compter tous les 3 chiffres et mettre un espace a ma suite de chiffre
// puis renvoyer un string Y
}

est-ce que ca vous parait logique ?
et pour le cas ou j ai un chiffre a virgule ?

merci d avance

6 réponses

mailys6 Messages postés 49 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 1 octobre 2005
14 avril 2005 à 18:24
Je pense que tu es sur la bonne voie
Utilise la fonction subString et une boucle for pour décomposer ton nombre. Pour le cas de ta virgule, je te conseille de décomposer ton nombre en deux : la partie entière et la partie décimale. Tu peux chercher la virgule avec la fonction chaine.lastIndexOf(",") (en admettant que la personne ne mette qu'une virgule). Ensuite tu traites les deux morceaux différemment sachant qu'un nombre à virgule s'écrit de la manière suivante :
12 345,123 45
Bon courage

Mailys
0
knone Messages postés 21 Date d'inscription mardi 24 août 2004 Statut Membre Dernière intervention 2 mai 2005
29 avril 2005 à 11:46
re-bonjour
je viens vous soumettre ma fonction
je l ai testé en driect su run parametre et cela marchait
par contre j aimerai generalisé ceci (donc faire ma fonction)
j ai un chiffre X a transformé mais j aimerai avoir en retour X transformé et Y (le X d origine pour les calculs)
wait etant la variable dans laquelle je met mon chiffre a renvoyé

function sep(x) {
if(x.indexOf(".",0) != -1){
var monTableau = x.split(".");
for(var i=0; i<x.length; i++){
inf = monTableau[1];
sup = monTableau[0];
dec =1 ;
}}
else {
if (x.indexOf(",",0) != -1){
var monTableau = x.split(",");
for(var i=0; i<x.length; i++){
inf = monTableau[1];
sup = monTableau[0];
dec =1 ;
}}
else {
sup = x ;
dec = 0 ;
}}


V = Math.floor((sup.length/3));
R = sup.length - (V*3) ;
wait="";
if ((R) < 3 ){
wait =wait.concat( sup.slice(0,R)) ;
}
var i = 0 ;
while (i < V ){
wait = wait.concat(" ",(sup.slice((R+(i*3)),(R+3+(i*3)))));
i++;
}
if (dec == 1 ){
if(((inf.length)/3)>1){
VV = Math.floor((inf.length/3));
R = inf.length - (V*3) ;
}
var i = 0 ;
wait = wait.concat(".");
while (i < V+1 )
{
wait= wait.concat((inf.slice((0+(i*3)),(3+(i*3))))," ");
i++;
}
}
}
0
mailys6 Messages postés 49 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 1 octobre 2005
29 avril 2005 à 12:09
Il y a deux solutions, la meilleure serait de faire une fonction
function sep(X as Integer) as String (Si X est uniquement un entier)
{
' tes traitements
' La dernière ligne de ta fonction doit être
sep = wait
}

Attention il ne doit y avoir qu'une seule fois sep = wait. wait est un String. Pour récupérer se résultat tu dois faire
Dim nb as Integer
Dim nbsep as String
...
nbsep = sep(nb)

La seconde solution est une procédure
Sub sep( X as Integer, wait as String)
{
'tes traitements
comme indiqué sur ton post, avec une affectation à wait
}

Cette fois tu peux écrire plusieurs fois wait =, dans des if, select case ...
Pour récupérer le résultat tu écris dans le code
Dim wait as String
Dim X as Integer
sep X, wait
sans parenthèses
ainsi dans ton programme tu peux travailler avec X et wait. X ne sera pas modifié, puisque dans ta fonction jamais tu ne changes la valeur de X. Par contre wait sera modifié.

J'espère que ca répond à ta question,

Mailys
0
knone Messages postés 21 Date d'inscription mardi 24 août 2004 Statut Membre Dernière intervention 2 mai 2005
2 mai 2005 à 13:38
je n ai pas tres bien compris ta reponse
mon but :
generaliser ma fonction pour que j ai un chiffre qui s inscrit dans une case "A"
ce resultat doit etre transformé selon le format donné plus haut et cette valeur doite etre retourné en A ainsi qu en B valeur pour calculer d autre case

donc j obtient A j utilise la fonction sortie j ai A revu est corrigé et B valeur initiale
pour ca j aimerai connaitre l organisation d une fonction (ou procedure que je ne connaissais aps)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mailys6 Messages postés 49 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 1 octobre 2005
2 mai 2005 à 15:17
C'est normal, j'ai dit vraiment n'importe quoi !
J'suis impardonnable. Comme je jongle entre VB et flash en ce moment, j'étais persuadé que tu faisais ça en VB. Oublie ce que j'ai dit. En flash :
A la fin de ta fonction tu dois écrire return wait
Tu places ta fonction sur une image
Ensuite, je ne sais pas comment tu vas organiser l'appel de la fonction. Est-ce que le nombre est saisi par l'utilisateur ou pas ? Je ne comprends pas comment tu veux faire là dessus.
Quand tu veux traduire le nombre, tu fais Variable = sep(nombre_à_formater).
Si tu veux un exemple, j'ai fait un petit fla avec ta fonction, une zone de saisie dans lequel l'utilisateur saisie un nombre et une zone d'affichage où le nombre formaté s'affiche en cliquant sur un bouton. File ton adresse mail si tu veux que je t'envoie ca.
N'hésite pas à me poser des questions, et encore milles excuses pour ma réponse à côté de la plaque !

Mailys
0
cs_hdh Messages postés 140 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 août 2012
18 juil. 2007 à 15:17
Bonjour,
J'ai la même problématique : j'ai fais un compteur  qui va de 0 à 2 000 000 et je voudrais mettre un séparateur de milliers

compteur=15156*i;
i++;
if (compteur<2000000)
    {gotoAndPlay(2);}
    else
    {gotoAndPlay(22);}

C'est logique à l'affichage j'ai 2000000 alors que je voudrais 2 000 000 ou 2.000.000

Etant pas fortiche en flash toute piste ou code m'aidera surement !!
au plaisir de vous lire
H
0
Rejoignez-nous