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 :

Format {0:c} avec C# [Débutant]


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut Format {0:c} avec C#
    Bonjour,

    J'ai un menu déroulant (DropDownList) dans lequel j'affiche le prix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    offer = string.Format("{0:c}", priceOfferStruct.PriceAmt)
    j'obtiens, par exemple, $49.95

    Comment je peux afficher 49,95 $ (le signe dollar[$] sera après les chiffres et le point[.] sera remplacé par virgule[,]) ?

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Ici, tu veux avoir une culture spécifique : c'est à dire avec une position spécifique du symbole de devise (après le nombre) , un symbole donné ($), et un séparateur de décimal donné (,).

    Donc, on va partir (par exemple) de la française, qui est correcte pour la position du symbole de devise et pour la virgule, mais on la modifier pour le symbole de devise (le passer de '€' à '$', dans le cas précis ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CultureInfo specificCulture = new CultureInfo("fr-FR");
    specificCulture.NumberFormat.CurrencySymbol = "$";
     
    string offer = string.Format(specificCulture, "{0:c}", 10.43);
    et le tour est joué.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Super Gentil...
    Je ne connaissais pas du tout l'histoire d'une culture spécifique dans c#...
    J'ai regardé avec tes explications... et sur le lien suivant j'ai trouvé aussi la liste : fr-CA French (Canada)

    alors en suivant ton exemple, avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CultureInfo specificCulture = new CultureInfo("fr-CA");
    string offer = string.Format(specificCulture, "{0:c}", 49.95)
    J'obtiens : 49,95 $

    Merci encore

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Autre solution...

    Tu ne spécifies pas la culture (qui est donc par défaut celle de l'utilisateur Windows) et tu modifies la culture dans tes paramètres régionaux quand tu testes la version canadienne de ton programme

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Autre solution...

    Tu ne spécifies pas la culture (qui est donc par défaut celle de l'utilisateur Windows) et tu modifies la culture dans tes paramètres régionaux quand tu testes la version canadienne de ton programme
    Sauf qu'on ne sait pas si il s'agit d'un site multidevise ou pas.
    Et de plus, la culture, sera celle du serveur.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Merci pour ta réponse, StringBuilder!!!
    Comme Bluedeep dit,
    Citation Envoyé par Bluedeep Voir le message
    Sauf qu'on ne sait pas si il s'agit d'un site multidevise ou pas.
    Et de plus, la culture, sera celle du serveur.



    En fait, mon site est bilingue entre "en-CA English (Canada)" et "fr-CA French (Canada)" donc, cela change...

  7. #7
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Il faut forcer le serveur à utiliser la locale du client.

    Ça se fait en deux lignes.

    C'est, à mon avis, la seule et unique solution à adopter : ce n'est pas à nous d'imposer le format des nombres/dates/monnaies à l'utilisateur.

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    C'est, à mon avis, la seule et unique solution à adopter : ce n'est pas à nous d'imposer le format des nombres/dates/monnaies à l'utilisateur.
    Pour nombre et date, je suis assez d'accord.

    Monnaie, là, par contre, tu t'avances un peu beaucoup, car ça pose des problèmes infiniment plus complexes (en termes "métier", pas en termes "technique", bien sur).

  9. #9
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Ben le format de la monnaie, c'est que de l'affichage. Je vois pas en quoi ça impacte quoi que ce soit.

    Le seul truc effectivement qu'on puisse devoir forcer avec une SpecificCulture, c'est la monnaie, si la personne paie dans une monnaie différente de sa locale.

    Mais pour l'affichage, il est très important de respecter le format de l'utilisateur : écrit une remise en euro dans le format américain "€ .99-", et demande à ta grand-mère combien ça fait... elle est pas près d'arriver à lire !

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Le seul truc effectivement qu'on puisse devoir forcer avec une SpecificCulture, c'est la monnaie, si la personne paie dans une monnaie différente de sa locale.
    C'est exactement ce que je disais : dans le cas contraire, tu rentres dans les problèmatique des applis multi-devises, et ça devient une problématique essentiellement métier, très peu technique.

  11. #11
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Oui, je suis d'accord, mais de là à forcer le format de la monnaie en "fr-CA" parce que l'utilisateur a cliqué sur le drapeau français, ou "en-CA" parce que l'utilisateur a cliqué sur le drapeau anglais, pour moi ce n'est pas une solution.

    Si je suis anglais et que je souhaite commander sur le site, je vais cliquer sur le drapeau anglais, car je ne comprends rien à la langue barbare d'outre-manche, et pourtant, pour les dates tout comme pour les prix, j'utilise le même format que mes voisins barbares, et non celui de mes amis outre-atlantique.

    En effet, pour la date, les anglais utilisent JJ/MM/AAAA et non MM/JJ/AAAA comme les américains.

    Il est donc très important d'exprimer tout ce qui est localisable dans la locale de l'utilisateur, et de n'adapter que ce qui doit absolument être adapté. Et mise à par le symbole de la monnaie, je ne vois pas du tout...

  12. #12
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    C'est exactement ce que je disais : dans le cas contraire, tu rentres dans les problèmatique des applis multi-devises, et ça devient une problématique essentiellement métier, très peu technique.
    Quand je disais "monnaie", je parlais du symbole uniquement. Pas de son format.

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

Discussions similaires

  1. [XSLT] XML-->XSLT output format apres transformation avec un x
    Par Hoegaarden dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 06/09/2010, 11h51
  2. [VB]Format de date avec excell
    Par Empty_body dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/02/2006, 14h56
  3. Formater un nombre avec Crystal Reports
    Par Soph70 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 05/07/2005, 19h27
  4. [format des données avec une procédure stockée]
    Par viny dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 10/03/2005, 13h24
  5. problème HD ntfs formaté sous WinXP avec win2000
    Par kalminou dans le forum Windows XP
    Réponses: 7
    Dernier message: 27/08/2003, 17h45

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