Besoin d'un coup de pouce sur Construct 2 ? C'est par ici !
Avatar de l’utilisateur
par SowSow
#27079 Bonjour,

je voudrais quand un texte affiche une variable, espacer les milliers, par exemple 562369 donnerai 562 369 ou 562,369. Je ne trouve aucune solution pour ce genre d'exigence. Auriez-vous une technique à me proposer ?

Merci de votre aide !
Avatar de l’utilisateur
par Deakcor
#27080 Bonjour,
Lors de la mise à jour de la variable de ton nombre qu'on appelera nb :
Tu stock int(nb/1000) dans une variable nb1
Et nb%1000 dans une variable nb2

La ou tu affiches ta variable tu fais nb1+, +nb2
Et voilà :)

Ps : je sais plus si c'est int() pour transformer un float en entier
Je sais plus si il faut transformer en string un entier avant de le mettre dans une chaîne de caractère
Je sais plus si c'est + ou & pour concaténer des chaînes de caractères

Edit : me suis dit que balancer le résultat sans explication ça n'avait pas trop d'intérêt alors
Le but c'est de séparer ton nombre en deux pour insérer le caractère que tu veux

Imaginons ton nombre est 123456.
Si tu fais 123456/1000 tu vas obtenir 123,456
Tu as pas besoin des nombres après la virgule donc tu coupes avec int et tu auras bien 123

Le %1000 fait en sorte que si un nombre dépasse 1000 il revient à 0.
Donc 1000%1000=0
999%1000=999
1001%1000=1
Donc dans ton cas 123456%1000=456

Voilà tu as les deux parties plus qu'à concaténer en insérant le caractère que tu veux entre :)

Si ton nombre dépasse les 1M je te conseille d'automatiser le truc en fonction de la taille de ta chaîne faire une boucle for
Avatar de l’utilisateur
par Deakcor
#27081 Vas y je me faisais chier je te l'ai fais du coup
Code: Tout sélectionner//précond : nb ton nombre à séparer, char le caractère de séparation
//postcond : Un string avec ton nombre séparé
function separationNb(nb,char){
   var afficheNb=""
  var lenNb=parseInt((String(nb).length-1)/3); //2 si > 999999, 1 si >999
  var tempNb=nb;
  for (var k=lenNb;k>0;k--){
    console.log(tempNb)
    var nbSize=Math.pow(10,k*3); // 1M ou 1000 c'est le nombre que tu vas utiliser pour séparer
    var nb1=parseInt(tempNb/nbSize);//La je prend la premier partie
    afficheNb+=String(nb1)+char;//je l'append au string final + le caractere de sep
    tempNb%=nbSize // et on continue avec le nouveau nb
  }
  return(afficheNb+String(tempNb))
}


Mieux affiché : https://codepen.io/Deakcor/pen/mjvMXp

Edit : non mais laisse tomber j'ai dis n'importe quoi c'est super complexe pour rien.
Comme c'est tous les miles ya juste à faire une boucle for a l'envers de la chaîne de caractère de ton nombre copier dans une nouvelle et tous les trois insérer le caractère sorry