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 :

[C# 1.1] Fonction String.Format() et séparateurs de milliers


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [C# 1.1] Fonction String.Format() et séparateurs de milliers
    Bonjour,

    Pour rajouter des séparateurs de milliers lors de l'affichage de valeur de type décimal j'utilise la fonction String.Format avec le format "{0:n}".

    Le problème est que qu'en utilisant la fonction String.Format() avec le format "{0:n}" celle ci arrondie à 2 chiffres après la virgule les décimaux ayant plus de 2 décimales.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    decimal temp = decimal.Parse("123579,124");
    MessageBox.Show(String.Format("{0:n}",temp));
    Cela me renvoie 123 579,12 et non pas 123 579,124

    Y a t’il un format pour la fonction String.Format() qui permette de séparer les milliers sans perdre la précision après la virgule ?

  2. #2
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    String.Format("{0:0.000}", 123579.124);

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par neptune
    String.Format("{0:0.000}", 123579.124);
    Mon but est de formater mes valeurs décimales en y rajoutant un séparateur de millier sans perdre leurs précision dans le cas de valeurs ayant plus de deux décimales.

    Exemple :
    100000000 => 100 000 000
    1100.256 => 1 100.256


    Ce que fais parfaitement la fonction String.Format("{0:n}", ChaineAFormater);

    Sauf que celle-ci arrondi tout nombres qu’on lui donne à 2 chiffres après la virgule.

    Exemple :
    100000000 => 100 000 000.00
    1100.256 => 1 100.26

    Je viens de bricoler un moyen d’obtenir le séparateur des millier sans perdre la précision des mes valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    decimal temp = decimal.Parse("123579,1234");
     
    if (temp.ToString().IndexOf(",")!=-1)
    {
    	MessageBox.Show(String.Format("{0:0,0}",temp) + "," + temp.ToString().Remove(0, temp.ToString().IndexOf(",")+1));
    }
    else
    {
    	MessageBox.Show(String.Format("{0:0,0}",temp));
    }
    Si quelqu’un connais une solution plus propre cela m’intéresse.


    Edit :
    Mon bricolage ne marche pas dans tout les cas. Du coup je vais réécrire une fonction qui sépare les milliers sans utiliser String.Format().

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/10/2010, 18h51
  2. Réponses: 3
    Dernier message: 28/04/2007, 15h07
  3. [VB.NET] StringBuilder Vs String.Format
    Par maitrebn dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/10/2004, 18h58
  4. [C#] String.Format
    Par alexischmit dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/05/2004, 11h58
  5. [VC++ .NET] String::Format({?}, ...
    Par benoitB dans le forum MFC
    Réponses: 2
    Dernier message: 15/12/2003, 13h22

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