IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment formater un decimal sous un certain format


Sujet :

C#

  1. #1
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut Comment formater un decimal sous un certain format
    Bonjour, j'ai un petit probleme.

    Je souhaite formater une valeur decimale a partir de 2 autres valeurs decimales sous un certain format. Ce format concatene les 2 premieres varaiables tout en gardant au minimum 6 chiffres. L'exemple parle mieux

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    V1 = 12;
    V2 = 46;
     
    //je veux mettre dans V3:
     
    V3 = 012046
    Autres exemples:

    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
    V1 = 1;
    V2 = 1;
     
    //je veux mettre dans V3:
     
    V3 = 001001;
     
    //ou alors
     
    V1 = 158;
    V2 = 985;
     
    //je veux mettre dans V3:
     
    V3 = 158985;
     
    // ou enfin
     
    V1 = 89;
    V2 = 1122;
     
    //je veux mettre dans V3:
     
    V3 = 891122;
    Est-ce possible en laissant V1, V2 et V3 en decimal ?
    Merci

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    V1 = 12;
    V2 = 46;
     
    //je veux mettre dans V3:
     
    V3 = V1*1000 + V2
    pourrais te convenir ?
    Tu divise V2 par différent nombre (10, 100, 1000, 10 000, ....) et tu regard si le résultat est inférieur à 1.
    Si c'est le cas alors tu sais combien de chiffres compose V2 et donc tu peux en déduire par combien tu multiplies V1 (dans le dernier exemple il faut le multiplier par 10 000 et non 1000).

    c'est la même chose que .
    L'affichage du zéro dans une IHM, tu gère cela au moment de l'afficher par le composant qui affiche la valeur.

  3. #3
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    bonjour.
    je pense que oui mais en utilisant une variable intermédiaire du type chaine surement, comme :
    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
     
    int V1, V2, V3;
    V1 = V2 = 1;
    string chaine_V1 = V1.tostring();
    switch(chaine_V1.lenght() )
    {
        case 0 : chaine_V1 = "000";break;
        case 1 : chaine_V1 = "00" + chaine_V1;break;
        case 2 : chaine_V1 = "0" + chaine_V1;break;
        //dans le cas où c'est égal à 3, c'est ok
    }
    string chaine_V2 = V2.tostring();
    switch(chaine_V2.lenght() )
    {
        case 0 : chaine_V2 = "000";break;
        case 1 : chaine_V2 = "00" + chaine_V2;break;
        case 2 : chaine_V2 = "0" + chaine_V2;break;
        //dans le cas où c'est égal à 3, c'est ok
    }
     
    //et finalement :
    V3 = int.parse(chaine_V1 + chaine_V2);
    Voilà, cela doit fonctionner même si ce n'est peut-être pas la meilleure solution...

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    J'ai pensé à lui proposer cette solution mais je trouve que c'est lourd.
    Tu crées plein de variable string dans tous les sens.
    Passer par du calcul mathématique c'est mieux je pense.

  5. #5
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Attention au comportement avec en entrée :
    V1 = 1234
    V2 = 5678

    V3 = ??

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    bah V2 -> 4 chiffres le composants :
    V3 = V1 * 10 000 + V2.
    Aucun problème .

  7. #7
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    Ca m'a l'air bien sympa tout ca, avec les 2 methodes je devrai pouvoir m'en tirer. M

    Merci beaucoup.

  8. #8
    Membre très actif
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Par défaut
    regarde du coté de String.Format(), tu devrais y trouver une solution beaucoup plus propre !


    Edit :


    Voila comment faire de facon bcp plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i = 12;
    int j = 34;
    String str = i.ToString("0000") + j.ToString("0000");
    ce qui nous affiche
    00120034

  9. #9
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Je n'avais pas vu le "minimum" 6 chiffres.. Je pensais 6 chiffres exactemant.

    String.format est pas mal à mon avis, à cumuler avec un parse derrière.

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    C'est bien tout cela mais string format n'est à utiliser que si l'on veut gérer un affichage particulier.
    Mais si le but est de calculer un nombre qui est la concaténation de deux nombres, il ne vaut mieux pas passer par les string.
    et puis il a dit :
    Est-ce possible en laissant V1, V2 et V3 en decimal ?

  11. #11
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    Disons que V3 doit etre au final un decimal... V1 et V2 peuvent etre en string a la limite.

    V3 est juste destine a l'affichage mais doit rester en decimal. C'est pour avoir une incrementation imbriquee en fait.
    J'incremente des elements a l'interieur d'autres elements comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    001001
    001002
    001003
    001004
     
    // et puis je passe a l'element parent suivant
     
    002001
    002002
    002003
    002004
     
    // J'ai ainsi une certaine sequence dans un ordre precis. Si l'ordre n'est pas respecte, y des ingenieurs qui vont pleurer...

  12. #12
    Membre très actif
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Mais si le but est de calculer un nombre qui est la concaténation de deux nombres, il ne vaut mieux pas passer par les string.
    euh .... il me semble qu'il y a un outils qu'on appelle le Cast et qui permet de revenir sur du décimal aprés

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Rien avoir avec le fait que si on peut revenir sur du décimal ou pas. Les strings c'est lourd. Si c pour gérer un affichage alors -> string format. Mais si c'est pour du calcul alors -> pas de string, autant passé par les types entiers, double, .... moins lourd.

  14. #14
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    J'ai fait une methode comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private string GetFileSeq(decimal V1, decimal V2)
    {
        string V3= "";
        if (V1 != 0 && V2 != 0)
        {
            FileSeq = V1.ToString("000") + V2.ToString("000");
        }
        return V3;
    }
    et ca marche:

    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
    V1 = 1
    V2 = 1
     
    V3 = 001001
     
     
    V1 = 18
    V2 = 16
     
    V3 = 018016
     
     
    V1 = 158
    V2 = 985
     
    V3 = 158985
     
     
    V1 = 1879
    V2 = 1459
     
    V3 = 18791459

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/07/2010, 10h34
  2. [C++ ILE] Comment afficher/ouvrir un sous format?
    Par hotus dans le forum AS/400
    Réponses: 2
    Dernier message: 13/08/2007, 18h13
  3. Réponses: 3
    Dernier message: 18/10/2006, 17h08
  4. Réponses: 7
    Dernier message: 28/06/2006, 16h20
  5. [EasyPHP] Comment créé un outil sous format d%u2019un package auto-installable !
    Par moonia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 28/06/2006, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo