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 :

String.Format séparateur de milliers et 1.xx => 1


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 30
    Points
    30
    Par défaut String.Format séparateur de milliers et 1.xx => 1
    Hello

    Je voudrais formater des montants avec les séparateurs de milliers. Je lis la doc (en diagonale bien sûr) et je trouve

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("{0:n}",1000)             => 1 000,00
    cela affiche bien les milliers mais fait aussi la troncature à 2 décimales. Cela tombe bien je veux afficher un montant.

    Seulement j'ai aussi besoin d'afficher des montants arrondis (sans décimales) mais avec les séparateurs de milliers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("{0:0,0}",1000.45) => "1 000" OK
    mais je ne comprends pas pourquoi cela ne fonctionne pas avec les *%$# d'unités

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("{0:0,0}",1.45)      => "01" pas bon moi je veux "1"
    Comment je vire ce 0 initial !?

    Merci

    PS: Bon finalement j'ai réussi à obtenir ce que je voulais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String.Format("{0:#,#}",1.33) ou
    String.Format("{0:#,0}",1.33)
    SI quelqu'un pouvait expliquer si c'est comme cela qu'il faut procéder et quelle solution est la meilleure

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Bonjour,

    Si tu veux afficher un montant (monétaire) tu peux utiliser les formats prédéfinis par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    1000.549.ToString("C2"); // affichera 1 000,55 €
    1000.549.ToString("C0"); // affichera 1 001 €
    1000.549.ToString("N2"); // affichera 1 000,55
    1000.549.ToString("N0"); // affichera 1 001
    1000.549.ToString("C"); // affichera 1 000,55 €
    1000.549.ToString("N"); // affichera 1 000,55
    Une chose importante à garder à l'esprit, ce sont les réglages du système d'exploitation qui sont utilisés (et chez moi c'est donc en français avec espace comme séparateur des milliers, virgule comme séparateur décimal et arrondi à 2 chiffres après la virgule).

    Il y a moyen de modifier ce comportement en changeant la culture du thread par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Threading.Thread.CurrentThread.CurrentCulture =
            Globalization.CultureInfo.GetCultureInfo("en-US");
    Ou pour une utilisation plus "locale" en passant un CultureInfo en second paramètre de ToString
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1000.549.ToString("C", Globalization.CultureInfo.GetCultureInfo("en-US"));
    // affichera $1,000.55
    Note on voit ici que l'arrondi à 2 chiffres est conservé, il y a possibilité de modifier aussi ce comportement (voir de créer un style numérique entier avec "toto" comme séparateur des milliers par exemple ) ça passe par la propriété NumberFormat du CultureInfo par exemple mais de mémoire je risquerais à écrire une bêtise.

    Cordialement !
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 13/08/2012, 14h15
  2. Réponses: 2
    Dernier message: 02/04/2007, 16h36
  3. Formater un nombre avec des séparateurs de milliers
    Par lagotonio dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/02/2007, 19h23
  4. Réponses: 6
    Dernier message: 14/02/2007, 12h51
  5. Format des nombres entiers, séparateurs de milliers
    Par zazaraignée dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2005, 01h25

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